Unity回调函数的简单使用

Unity回调函数的简单使用

Unity开发中,经常使用到回调。下面我们以一个简单的示例,介绍Unity的回调函数的使用:我们用制作一个滑动列表,滑动的Item绑定UIItem.cs脚本,控制脚本为UIScrollCtrl.cs。使用UIScrollCtrl.cs对多个UIItem.cs对象进行初始化,同时传入回调函数ShowItemInfo();当每个Item点击自己时,调用回调函数,输出点击的Item的信息。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class UIScrollCtrl : MonoBehaviour {
    [SerializeField]
    private UIItem ItemObject;
    [SerializeField]
    private UIGrid ItemGrid;
    [SerializeField]
    private UIScrollView ItemScrollView;

    private List ItemCacheds = new List();

    private List ItemNameList = new List { "1", "2", "3", "4", "5", "6", "7", "8","9" };
    void Start()
    {
        for (int i = 0; i < ItemNameList.Count; i++)
        {
            Object tempObject = GameObject.Instantiate(ItemObject);
            UIItem tempItem = tempObject as UIItem;
            tempItem.transform.parent = ItemGrid.transform;
            tempItem.transform.localScale = ItemObject.transform.localScale;
            ItemCacheds.Add(tempItem);
        }
        for (int i = 0; i < ItemCacheds.Count; i++)
        {
            ItemGrid.AddChild(ItemCacheds[i].gameObject.transform);
            ItemCacheds[i].InitItem(ItemNameList[i], ShowItemInfo);
            ItemCacheds[i].gameObject.SetActive(true);
            ItemGrid.Reposition();
        }
        ItemScrollView.ResetPosition();
    }
    /// 
    /// 回调函数
    /// 
    /// 调用的Item对象
    private void ShowItemInfo(UIItem item)
    {
        if (item != null)
        {
            Debug.LogError("----->This Item Name is " + item.NameInfo);
        }
    }
}

using UnityEngine;
using System.Collections;
using System;

public class UIItem : MonoBehaviour {

    [SerializeField]
    private UILabel ItemName;
    [SerializeField]
    private Action ItemAction;

    public string NameInfo;
    /// 
    /// Item初始化函数
    /// 
    /// 控制脚本传进来的Name
    /// 回调函数
    public void InitItem(string name, Action action)
    {
        NameInfo = name;
        ItemName.text = name.ToString();
        ItemAction = action;
    }
    /// 
    /// Item点击函数
    /// 
    public void ItemClick()
    {
        if (ItemAction != null)
        {
            ItemAction(this);
        }
    }
}

Unity回调函数的简单使用_第1张图片

=======================================================================

结束。

你可能感兴趣的:(Unity回调函数的简单使用)