您当前的位置: 首页 > 

幻世界

暂无认证

  • 3浏览

    0关注

    237博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

XLua热更新框架学习(三)

幻世界 发布时间:2019-09-24 16:20:06 ,浏览量:3

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

qq扫描二维码加群

需要注意的几点:

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

一:获取属性

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)

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

二:黑名单添加

编译时候提示错误:Assets/XLua/Gen/UnityEngineLightWrap.cs(723,60): error CS1061: Type `UnityEngine.Light' does not contain a definition for `shadowRadius' and no extension method `shadowRadius' of type

解决方案:在Assets\XLua\Src\Editor\Generator.cs 中GetGenConfig函数中添加黑名单,然后执行菜单xlua ->Clear Generator code ,再执行xlua ->Generator code

public static void GetGenConfig(IEnumerable check_type)
{
    BlackList = new List(){
    new List(){"UnityEngine.Light", "shadowRadius"},
    new List(){"UnityEngine.Light", "shadowAngle"},
    ..
    };
}

三:只更新部分逻辑

找到util.lua文件,放到你自己的lua加载路径

local util = require 'util'
util.hotfix_ex(CS.SnakeHead,'Die',function(self)
   self.Die(self)

   UnityEngine.Debug.Log("补充更新")
end)

 

 

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

qq扫描二维码加群

关注
打赏
1660704426
查看更多评论
立即登录/注册

微信扫码登录

0.0377s