码迷,mamicode.com
首页 > 编程语言 > 详细

toLua学习一(lua控制Unity第一步)

时间:2019-03-10 22:17:49      阅读:2600      评论:0      收藏:0      [点我收藏+]

标签:utils   包括   highlight   targe   封装   persist   star   空闲   name   

新公司项目是纯Lua项目,之前一直是在用C#,转Lua之后特别不习惯,所以就经常空闲时间练习联系

希望我能把自己的学习经历一直持续记录下来~

https://github.com/topameng/tolua  这是toLua作者的GitHub。

之前一直弄混淆,tolua是tolua, LuaFramework则是另一个东西,基于tolua上面封装的一层游戏开发的框架。

个人不太喜欢用别人框架的东西,感觉条条框框太过于束缚,所以我是直接学习tolua的,在framwork上花的精力并不多

第一波导入工程。 tolua下下来是一个Unity项目工程,强迫症,喜欢自己新建项目,所以是拷贝asset文件夹下的东西和asset同级的几个必要文件夹过去

首先定义一个lua加载器 LuaResLoader :

它是继承至 LuaFileUtils类  会优先读取persistentDataPath/系统/Lua 目录下的文件,未找到文件则读取 Resources/Lua 目录下文件(仍没有使用LuaFileUtil读取)。

这个类的作用是读取项目的lua文件。包括更改lua文件结构的默认读取目录以及添加额外的读取目录。如果不需要自定义,直接new出来即可。

之后是定义一个lua虚拟机,用来进行lua和C#之间的交互  LuaState  lua = new LuaState();

紧接着将虚拟机绑定我们tolua转换之后的 Unity_wrap类。提供“翻译工具”,让我们的UnityAPI能在Lua项目中使用

这样 我们的lua代码环境就创建好了。

接着根据项目的需求,创建lua入口脚本

根据项目的需求,有些项目是部分lua代码,部分C#代码,有些是C#调用lua的代码,lua做主要逻辑。 有些是lua做主要逻辑,C#只是提供驱动Unity的工具。

目前我接触到的项目是是用lua做主要逻辑,C#只作为和Unity沟通的工具

OK 废话说完了,上代码

        new LuaResLoader();
        LuaState lua = new LuaState();
        lua.Start();
        LuaBinder.Bind(lua);
        lua.DoFile("Main.lua");//这里的lua脚本我习惯是用tolua的mian作为入口,也可以自定义一个
        

  这样我们的lua就可以启动啦!

接着我们可以在lua里面写一些Unity的API,进行Lua和Unity的沟通

GameObject = UnityEngine.GameObject  --需要持有GameObject的引用,才能执行里面的方法

function Main()
	print("logic start")
	go = GameObject("Cube") --调用Unity GameObject的构造函数创建一个空物体
	go.name  = "lua_object"
end
Main()

  技术图片

这样,就完成了lua控制Unity的过程啦!

toLua学习一(lua控制Unity第一步)

标签:utils   包括   highlight   targe   封装   persist   star   空闲   name   

原文地址:https://www.cnblogs.com/leixuan111/p/10507564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!