当我给onclick一个'function'类型时,它会显示异常InvalidCastException:无法从源类型转换为目标类型

时间:2015-05-14 06:47:09

标签: unity3d unityscript ngui

现在我正在使用UIEventListener添加一个clicker。当我在一个文件中写它时,它可以正常工作。像这样: UIEventListener.Get(popButton).onClick = showPop;

但是当我把它写成两个seprate文件时,它给了我error.first文件:

public class Adapter{
    var grid:GameObject;

    function addItems(data:List.<PrintItem>, prefab:GameObject, func:Function){
        for(var i:int=0;i<data.Count;i++){
            var gameObject:GameObject = NGUITools.AddChild(grid, prefab);
            UIEventListener.Get(gameObject).onClick = func;
        }
    }
}

第二档:

//I use the funtion like this
adapter.addItems(list, GO[0], hidePop);
//the hidePop is like this
var hidePop:Function = function(){
    switchPopMenu(false);
};

当我运行统一时给我错误

InvalidCastException: Cannot cast from source type to destination type.
Adapter.addItems (System.Collections.Generic.List`1 data,   
UnityEngine.GameObject prefab, ICallable func) (at
Assets/Scripts/yhj/Tools/Adapter.js:12)

1 个答案:

答案 0 :(得分:0)

尝试使用EventDelegate.Add(obj.onClick, func);。直接分配可能会导致某些问题。