IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity开发日记--Lua开发游戏UI界面 -> 正文阅读

[游戏开发]Unity开发日记--Lua开发游戏UI界面

本文主旨

先道歉解释下哦~ 因为笔者去年换了一家新的游戏公司,熟悉项目和融入新的环境花费了很长时间,还是有些懒惰了,忘记记录了;从现在开始开始继续分享自己新的学习之路。
这篇文章和大家分享近一年来在新公司一些新的学习经验和自己的变化,和对待项目制作过程中一些自身改变和学习之道。

正文

就我本身而言接触Lua,从熟悉基本语法规则和运用,是用了20多天;虽说Lua上手简单,就算不熟悉代码的人,看完Lua基础也可以写几个函数;因为Lua相对于Java、c#等,没用繁琐的格式、写法要求;关键字也不多,自由度还是很高的~ 但是还是需要编写者自己注意书写格式,好的代码规范是一个程序员最起码的“道德标准”。

一、Unity开发为什么要学习Lua~

这是很多初学者的疑问,我是Unity开发人员,我会C#就能满足日常的开发需求啊;这个确实没有错的,确切的说,如果不考虑某些特定的需求,c#能保证你完成游戏中100%的功能的哈~
所以这里就要说到另一个热更新方案——ILRuntime,这个是只需要在unity中安装特定的插件就可以实现同等的热更效果,不需要学习Lua;详情可参靠这个官方链接。“ILRuntime”更适用于小中型工作室,一些大公司会有些祖传老代码都是Lua写的,用的是经典的Tolua,虽说也听大佬们说也是过时的了,但是很多游戏都是基于Tolua开发的,越老越稳定嘛~
不要纠结哪种方案更好,效率更高这类问题;因为解决方案有很多,“Xlua”、“Ulua”等等各有优缺点,并且都被广泛应用,所以这不是纠结学习那个的问题

二.什么是热更新呀~

现在市面上的上线游戏没有不会热更新的。所谓热更新就是游戏在运行过程中就进行了代码的更新,美术资源的替换,在你游戏进行中时,代码更新就完成了,比如每款国民级手游的不停机跟新就是一种性质热更新,热更新在不影响用户体验的情况下,最小程度上完成代码的迭代,资源的替换,是现在最主流的一种更新方式;最近准备学一下打包的流程,前辈说苹果端的包审核更严格、而且有的包会通过技术手段被屏蔽,所以热更新会绕过一些流程,更快的将新的功能更新上去。

三.了解Lua

Lua的语法基础

我一直都在用的自学网站
1.菜鸟教程 传送门
2.编程狮 传送门

Lua和C#的交互方式

实现热更新三点要素:反射、虚拟机、代码绑定
1.ToLua插件的使用:网上搜索tolua插件,下载解压后将to-lua-master全部拽到Unity中的Asset下
2. Tolua脚本可以使用lua函数来处理事件,实例化CLR对象,访问属性。CLR——公共语言运行库(Common Language Runtime),只知道是微软的一套开源运行库。
3. Lua虚拟机的启动,感谢大佬提供学习思路ToLua源码分析,这个朋友写的详细哈

//虚拟机初始化启动
void Start() 
{
    lua = new LuaState();             
    lua.Start();          
    LuaBinder.Bind(lua);  
}

4.利用c#的反射的特性进行两种代码间的交互,在Lua脚本中对C#脚本中特定方法的调用

public Class FuncForCsharp
{
	//打印作者的特征
	public void DebugFunc()
	{
		Debug.Log("You are so Cool ~~~");
	}
}
local m_objectt = tolua
local m_fc = m_objectt .findtype("FuncForCsharp")
if not m_fc then
	m_objectt .loadassembly("Assembly_CSharp")
	m_fc = m_objectt .findtype("FuncForCsharp")
end
local m_func = m_objectt .getmethod(tpy,"LogMyName")

5.脚本的绑定,目前的解决思路是全为Lua控制生命周期,Awake.Updata、Start等生命周期函数等都可以在Lua脚本正常调用,其中还有Lua特有闭包的概念和一些知识,我会在深深的研究一下再来解答。

总结

希望这边文章可以记录自己的学习历程,会给别人一点帮助~
之后会研究一些打包流程不定时分享~

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:15:32  更:2022-04-18 18:16:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:08:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码