符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
这篇文章将为大家详细讲解有关在ToLua框架中如何使用C#与Lua,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联服务项目包括安图网站建设、安图网站制作、安图网页制作以及安图网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,安图网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到安图省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查。
所谓“互调”,当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体。
ToLua框架主要是通过静态绑定来实现C#与Lua之间的交互的,基本原理是通过建立一个Lua虚拟机来映射C#脚本,然后再通过这个虚拟机来运行Lua脚本,Lua脚本在运行时可以通过虚拟机反过来调用C#脚本里注册过的物体,这种方式的优势在于比起使用反射的uLua来说效率更高。
ToLua框架下可以将实现分成三大部分:普通的Unity+C#部分、ToLua虚拟机部分和Lua脚本部分,结构见下图:
ToLua结构
目前国内需要热更的手游一般都将主要的逻辑框架和组件功能用C#实现,而具体功能和调用放在Lua中,因为C#是不能被打包进AssetBundle中的,所以无法通过AssetBundle对代码进行改动,但是Lua是即时编译型语言,并且可以被打包进入AssetBundle中,在需要修改简单功能时,将Lua代码通过AssetBundle进行更新即可。
首先是下载地址:
ToLua
这是作者的github地址,进入以后点击下载Zip,完成后解压到自己需要的目录,再用Unity打开即可。
点击下载zip即可
第一次打开工程时会提示是否需要自动生成注册文件,新手可以选择直接生成,若选择了取消,也可以在编辑器菜单中手动注册。——这是一个非常重要的操作,后文也会提到。
下面开始关于使用的正文。
前面有提到过ToLua的基本实现方式,这里可以再细化一点:创建虚拟机——绑定数据——调用Lua代码,这套步骤在框架自带的Example里也非常清晰。
首先脱离Example实现一下这三个步骤。
ToLua虚拟机的创建非常简单,只需要new一个LuaState即可,我们建立一个C#脚本作为入口,引用LuaInterface命名空间,输入以下代码,将文件挂载到场景中的一个空物体上即可。
using LuaInterface; using UnityEngine; public class LuaScene : MonoBehaviour { string luaString = @" print('这是一个使用DoString的Lua程序') "; string luaFile = "LuaStudy"; LuaState state; void Start() { state = new LuaState();//建立Lua虚拟机 state.Start();//启动虚拟机 //使用string调用Lua state.DoString(luaString); //使用文件调用Lua //手动添加一个lua文件搜索地址 string sceneFile = Application.dataPath + "/LuaStudy"; state.AddSearchPath(sceneFile); state.DoFile(luaFile); state.Require(luaFile); state.Dispose();//使用完毕回收虚拟机 Debug.LogFormat("当前虚拟机状态:{0}", null == state);//验证虚拟机状态 } }