🌴总览
本部分介绍XLua中添加泛型类型的UnityAction导出.
🌴具体方法
在XLua的配置文件中, 如ExampleConfig.cs中, 找到CSharpCallLua列表(public static List CSharpCallLua), 在其中添加需要的类型, 如:
[CSharpCallLua]
public static List<Type> CSharpCallLua
{
get
{
var delegate_types = new List<Type>();
// ....
// 额外添加需要的类型
delegate_types.Add(typeof(UnityEngine.Events.UnityAction<string>));
delegate_types.Add(typeof(UnityEngine.Events.UnityAction<float>));
delegate_types.Add(typeof(UnityEngine.Events.UnityAction<double>));
delegate_types.Add(typeof(UnityEngine.Events.UnityAction<bool>));
// ....
}
}
这样生成的代码里就有相应的转换, 如:
//XLua/Gen/DelegatesGensBridge.cs
public override Delegate GetDelegateByType(Type type)
{
// ...
if (type == typeof(UnityEngine.Events.UnityAction<float>))
{
return new UnityEngine.Events.UnityAction<float>(__Gen_Delegate_Imp18);
}
// ...
}
最后就可以愉快的使用如Slider.onValueChanged.AddListener之类的接口了.