UH2S2L24——索引器和属性替换

索引器和属性替换

索引器和属性的固定写法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
xlua.hotfix(CS.类名, {
--如果是属性进行热补丁重定向
set_属性名 = function(self, v)
-- v是传入的值
-- 设置属性 的方法
end,
get_属性名 = function(self)
-- 得到属性 的方法
return 对应属性的值
end,
--索引器固定写法
--set_Item 通说索引器设置
--get_Item 通过索引器获取
set_Item = function(self, index, v)
-- index是传入的索引
-- v是传入的值
end,
get_Item = function(self, index)
-- index是传入的索引
return 对应索引的值
end
})

假设我们要对下面索引器和属性做热补丁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[Hotfix]
public class HotfixMain : MonoBehaviour
{
public int[] array = new int[] { 1, 2, 3 };

void Start()
{
this.Age = 100;
Debug.Log(this.Age);

this[99] = 100;
Debug.Log(this[9999]);
}

//属性
public int Age
{
get { return 0; }
set { Debug.Log(value); }
}

//索引器
public int this[int index]
{
get
{
if (index >= array.Length || index < 0)
{
Debug.Log("索引不正确");
return 0;
}

return array[index];
}
set
{
if (index >= array.Length || index < 0)
{
Debug.Log("索引不正确");
return;
}
array[index] = value;
}
}
}

按照固定写法写为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
xlua.hotfix(CS.HotfixMain, {
set_Age = function(self, v)
print("Lua重定向的属性" .. v)
end,
get_Age = function(self)
return 10
end,
set_Item = function(self, index, v)
print("Lua重定向索引器,索引:"..index ..",值:" ..v)
end,
get_Item = function(self, index)
print("Lua重定向索引器")
return 999
end
})

​​