欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
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扫描二维码加群