Unity アクセス XLua 問題まとめ

一、このタイプは CSharpCallLua に追加する必要があります

Unity で XLua を更新する際に発生する問題

LuaException: c# exception:This type must add to CSharpCallLua: UnityEngine.Events.UnityAction<float>

LuaException: c# exception:System.InvalidCastException: This type must add to CSharpCallLua: System.Action<bool>

XLua ExampleConfig.cs に次の構成を追加し、コードを再生成します。

//C#静态调用Lua的配置(包括事件的原型),仅可以配delegate,interface
    [CSharpCallLua]
    public static List<Type> CSharpCallLua = new List<Type>() {
            typeof(Action),
            typeof(Func<double, double, double>),
            typeof(Action<string>),
            typeof(Action<double>),
            typeof(Action<bool>),
            typeof(Action<float>),
            typeof(UnityEngine.Events.UnityAction),
        };

二、メソッド 'GetComponent' で Type を null にすることはできません

LuaException: c# exception:Type cannot be null.,stack:  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <00000000000000000000000000000000>:0 
      at XLua.OverloadMethodWrap.Call (System.IntPtr L) [0x00000] in <00000000000000000000000000000000>:0 
      at XLua.MethodWrap.Call (System.IntPtr L) [0x00000] in <00000000000000000000000000000000>:0 
      at XLua.StaticLuaCallbacks.FixCSFunction (System.IntPtr L) [0x00000] in <00000000000000000000000000000000>:0 
    stack traceback:
    	[C]: in method 'GetComponent'

エラー行コード

closeButton:GetComponent("Button").onClick:AddListener(self:OnClose(true))

「ボタン」文字列でコンポーネントを取得するように変更し、typeof(Button) でコンポーネントを取得します。次のように変更します。

closeButton:GetComponent(typeof(Button)).onClick:AddListener(self:OnClose(true))

おすすめ

転載: blog.csdn.net/X_King_Q/article/details/119376546