1. 更换图片资源
local engine = CS.UnityEngine
local loadAssetFunc = xlua.get_generic_method(engine.AssetBundle, "LoadAsset")
-- sssStart是测试方法
xlua.hotfix(CS.Test, "sssStart",
function (self)
-- 获取ab包
local hotUpManager = self: GetComponent ("HotUpManager");
local ab = hotUpManager.ab;
-- 指定类型为Sprite
local spriteAsset = loadAssetFunc(engine.Sprite)
local sprite = spriteAsset (ab, "Cancel.png")
self.btn.image.sprite = sprite;
print(self.btn.image.sprite);
end)
2. 标点使用
self
可以理解为C#的this
- 要使用静态方法或参数时, 使用
.
,使用非静态方法时使用:
如
// C#
int commonParam;
static int StaticParam;
static void StaticMethod()
{
}
void CommonMethod()
{
}
--lua
self.commonParam;
self.StaticParam;
self.StaticMethod;
self:CommonMethod;
3. 字符串连接
lua中使用..
来连接字符串,如
local text = Seconds.. "秒";
+
则被认为是加法运算的操作
4. 整除
lua中除法/
会得到一个小数,如
print(60/60)
--1.0
print(66/60)
--1.1
而使用//
会直接整除,如
print(60//60)
--1
print(66//60)
--1
5. Vector
如,对RectTransform的sizeDelta赋值
self:GetComponent("RectTransform").sizeDelta = CS.UnityEngine.Vector2(300, 219);
6. 委托
Lua中没有复合运算符 不能+=
-- 绑定委托
self.dele=self.dele+testFun;
-- 解绑委托
self.dele=self.dele-testFun;
function testFun( ... )
print("测试委托绑定");
end