Unity Xlua之Hotfix热补丁 (二)
一.属性和索引器替换
- 属性固定的写法set_属性名称,get_属性名称
- 索引器固定写法set_Item,Set_Item
private int age;
private int Age
{
get
{
return 0;
}
set
{
age = value;
}
}
private int[] arr = { 1, 2, 3, 4, 5 };
public int this[int index]{
get{
return arr[index];
}
set{
arr[index] = value;
}
}
xlua.hotfix(CS.HotfixMain,{
get_Age = function (self)
return self.age
end,
set_Age = function (self,val)
print("设置值:"..val)
self.age = val
end,
set_Item = function (self,index,val)
print("重定向索引器"..index..":"..val)
self.arr[index] = val
end,
get_Item = function (self,index)
return 0;
end
})
二.事件操作替换(只做了解即可)
private event UnityAction action;
private void Start()
{
LuaMgr.GetInstance().Init();
LuaMgr.GetInstance().LoadFile("Main");
action += TestUnityAction;
action += TestUnityAction;
action += TestUnityAction;
action -= TestUnityAction;
action?.Invoke();
}
xlua.hotfix(CS.HotfixMain,{
add_action = function (self,del)
print("Lua")
end,
remove_action = function (self,del)
print("Lua")
end
})
三.泛型类替换
[Hotfix]
public class HotfixTest<T>
{
public void Test(T t)
{
Debug.Log(t);
}
}
xlua.hotfix(CS.HotfixTest(CS.System.String),{
Test = function (self,str)
print("Lua:"..str)
end
})
xlua.hotfix(CS.HotfixTest(CS.System.Int32),{
Test = function (self,int)
print("Lua:"..int)
end
})
|