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
} )