XLua热更新框架学习(三)

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

XLua热更新框架学习(三)_第1张图片


演示案例:原工程地址:https://download.csdn.net/download/qq_37310110/11812518

c#原始逻辑生成100个cube

[Hotfix]
public class CreateWall : MonoBehaviour
{
    private GameObject prefabsCube;
    // Start is called before the first frame update
    void Start()
    {
        prefabsCube = Resources.Load("Cube");
        Createwall(prefabsCube);
    }
    private void Createwall(GameObject prefab)
    {
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                GameObject.Instantiate(prefab,new Vector3(i,j,0),Quaternion.identity);
            }
        }
    }
}

 lua更新逻辑生成16个cube

local GameObject = CS.UnityEngine.GameObject
local Vector3 = CS.UnityEngine.Vector3
local Quaternion = CS.UnityEngine.Quaternion

xlua.hotfix(CS.CreateWall,'Createwall',function(self,prefab)
    for i = 0 ,3,1 do
        for j = 0,3,1 do
		   GameObject.Instantiate(prefab,Vector3(i,j,0),Quaternion.identity);
        end		 
    end
end)

print('Xlua HotFix Over...')

------------------------------------------------------------------------------------------------------------------------------------------------------------

以上c#的方法是有参数的,lua内可以直接传入。

如果c#的方法是没有参数的我们就需要在lua里面调用c#的属性

lua访问c#脚本内的字段

方法1.可以在lua代码内通过“self.字段名”进行访问,但是字段必须是public修饰的。弊端破坏了c#的封装性

xlua.hotfix(CS.CreateWall,'Createwall',function(self)
    for i = 0 ,3,1 do
        for j = 0,3,1 do
		   GameObject.Instantiate(self.prefabsCube,Vector3(i,j,0),Quaternion.identity);
        end		 
    end
end)

方法2.在lua语言中使用代码获取c#类中private成员的访问权,xlua.private_assessible(CS.类名)。

这样就可以在lua脚本中访问到c#类当中的私有成员。

--获取目标类的权限
xlua.private_assessible(CS.CreateWall)
xlua.hotfix(CS.CreateWall,'Createwall',function(self)
    for i = 0 ,3,1 do
        for j = 0,3,1 do
		   GameObject.Instantiate(self.prefabsCube,Vector3(i,j,0),Quaternion.identity);
        end		 
    end
end)

本人是根据擅码网的monkey老师的教学视频学习的:http://www.mkcode.net/ 


欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

XLua热更新框架学习(三)_第2张图片

你可能感兴趣的:(Unity移动端相关技术,工具类,Lua)