背景

自己也是xlua新手,刚开始不知道如何从lua访问c#方法,然后google后,也是很普通需要在扩展类加上
[XLua.LuaCallCSharp],自己的确也是加了,但是在unity运行的时候还是不行,报nil

解决方式

经过一番尝试后,发现如果lua需要访问C#扩展方法,需要先清空代码,然后再重新生成,有更好的方式,欢迎留言交流

代码示例

C#

[XLua.LuaCallCSharp]
public static class EngineExt
{
    static public Vector3 ScreenToWorldPoint(this RectTransform trans, Vector2 screenPoint, Camera cam = null)
    {
        if (cam == null)
        {
            var cvs = trans.gameObject.GetUICanvas();
            if (cvs != null)
            {
                cam = cvs.worldCamera;
            }
        }
        Vector3 worldPos;
        RectTransformUtility.ScreenPointToWorldPointInRectangle(trans, screenPoint, cam, out worldPos);
        return worldPos;
    }
}

Lua

local worldPos = this.heroObjTempl.RectTransform:ScreenToWorldPoint(scrnPos, nil)

说了这么多,还不是钱的问题!!

跪求打赏

本文地址:https://blog.csdn.net/caiqimin__/article/details/107335015