您的位置:首页 > 编程语言 > Lua

项目后期Lua接入笔记04--宏定义处理HelloWorld

2017-03-28 20:29 483 查看
Lua和我们Unity游戏用的C#脚本语言有些不同,并不是编译型语言,虽然lua语言在真正执行以前,也会进行编译,这就意味着脚本里面并不支持c#里的宏定义形式,比如我们常用的平台判定UNITY_ANDROID或是自身定义的一些宏定义。

我们需要自己手动构建一个类,并将它wrap,在lua里调用对应的函数。

public static class LuaDefine
{
public static bool UNITY_ANDROID()
{
#if UNITY_ANDROID
return true;
#else
return false;
#endif
}

public static bool UNITY_EDITOR()
{
#if UNITY_EDITOR
return true;
#else
return false;
#endif
}

public static bool UNITY_STANDALONE()
{
#if UNITY_STANDALONE
return true;
#else
return false;
#endif
}
}


打开customsettings,在staticClassTypes里加入typeof(LuaDefine),在customTypeList里加入 _GT(typeof(LuaDefine))。然后执行Lua/GenerateAll.

在Lua中调用时直接LuaDefine.UNITY_ANDROID()

编写自己的Lua脚本

local transform;
local gameObject;

Test1 = {};
local this = Test1;
local message ;

--启动事件--
function Test1.Awake(obj)
gameObject = obj;
transform = obj.transform;
message = obj:GetComponent('LuaMono');

if(LuaDefine.UNITY_ANDROID()) then
log("is android platform");
end

this.InitPanel();
LuaUtils.Log("Awake lua--->>"..gameObject.name);
end

--初始化面板--
function Test1.InitFunc()
LuaUtils.Log("InitFunc lua--->>"..gameObject.name);

end

--初始化面板--
function Test1.InitPanel()
LuaUtils.Log("InitPanel lua--->>"..gameObject.name);
end

--销毁事件--
function Test1.OnDestroy()
LuaUtils.Log("OnDestroy---->>>");
end

return this;


执行脚本前,我们要将lua加载修改一下,在LuaFileUtils的ReadFile()函数,根据自己的项目来进行修改,也可以自定义loader类。写好后将luaManager绑定在一个脚本上,在一个预制体上挂上我们的脚本LuaMono,并设置好lua脚本名,在游戏运行时将预制体实例化出来。运行游戏就可以看到效果了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua unity 项目 后期 接入