热更新

如热更新果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,体验不好)。热更新可以在不重新下载客户端的情况下,更新游戏的内容。

(1)热更新的实现方式

1,使用Lua脚本编写游戏的UI或者其他的逻辑
Lua是一个精悍小巧的脚本语言,可以跨平台运行解析,而且不需要编译的过程
2,使用C#Light
3,使用C#反射技术

(2)在所有的热更新技术中都需要AssetBundle

Unity提供了一个资源更新技术,就是通过AssetBundle,我们可以通过AssetBundle更新游戏UI,也可以把脚本或者其他代码当成资源打包成AssetBundle然后更新到客户端。

(3)热更新技术的学习过程

1,学习Lua编程
2,学习通过LuaInterface和luanet进行Lua和C#的交互通信
3,学习使用AssetBundle进行资源更新
4,学习uLua SimpleFramework
利用us创建自己的热更新游戏

Lua编程的学习

(0)编写程序

1,找到luaforwindows的安装目录,找到SciTE
2,打开SciTE,写入第一行Lua代码
print("Hello World")
3,保存代码,保存为HelloWorld.lua
4,按下F5运行

(1)程序分析

Lua中每一条语句后面是没有;号的

(2)定义变量

num = 100
这里定义了一个全局变量叫做num,赋值为100
在Lua中定义变量是没有类型的,根据存储什么数据,来决定是什么类型

(3)注释

1,单行注释 --注释内容
2,多行注释 --[[ 这里是注释内容 ]]--

(4)Lua中变量类型

4,number小数类型(Lua中没有整数类型)
5,table表类型
myTable = {34,134,34,2,342,4}
myTable[2],表示134,索引是从1开始的。
我们可以使用type()来取得一个变量的类型

(5) 流程控制
-- if语句

1, if [condition] then
end
2, if [condition] then
else
end
3, if [condition] then
elseif [condition] then
else
end

-- while循环
 
Paste_Image.png
 
Paste_Image.png
--repeat循环(do while)
 
Paste_Image.png
 
Paste_Image.png
 
Paste_Image.png
--for循环
 
Paste_Image.png

break可以终止循环 没有continue语法

(6)函数(方法)
 
Paste_Image.png
 
Paste_Image.png
--标准库
1,数学处理的math相关函数
2,字符串处理的string相关函数
 
Paste_Image.png
3,表处理的table相关函数

在Lua中的table类似C#中的字典,其实就是一个 key-value键值对的数据结构。
1...table的创建
myTable = {}
表名后面使用{}赋值,表示一个空的表
2...table的赋值
myTable[3]=34 当键是一个数字的时候的赋值方式
myTable["name"]="taikr" 当键是一个字符串的赋值方式
myTable.name = "siki"当键是一个字符串的赋值方式
3...table的访问
myTable[3] 当键是数字的时候,只有这一种访问方式
myTable.name 当键是字符串的时候有两种访问方式
myTable["name"]
4...table的第二种创建方式
myTable = {name="taikr",age=18,isMan = false}
(表创建之后依然可以添加数据)
数据访问
myTable.name
myTable["name"]
5...table的第三种方式(类似数组的使用)
myTable = {34,34,34,3,4,"sdfdsf"}
当没有键的时候,编译器会默认给每一个值,添加一个数字的键,该键从1开始
6...表的遍历
(1),如果是只有数字键,并且是连续的可以使用下面的遍历

 
Paste_Image.png

(2),所有的表都可以通过下面的方式遍历

 
Paste_Image.png

7...表相关的函数
(1).table.concat (只针对只有值的情况)
把表中所有数据连成一个字符串

 
Paste_Image.png

(2),table.insert
向指定位置插入一个数据

 
Paste_Image.png

(3),table.move
移动数据

 
Paste_Image.png

(4),table.sort(从小到大排列的)
排序

 
Paste_Image.png

8...通过表来实现面向对象
myTable={} 申明对象
local this = myTable声明this关键字代表当前对象
--定义并声明对象中的属性
myTable.name="siki"
myTable.age = 110
--定义并声明对象中的方法
myTable.function = function ()
[code to execute]
end
function myTable.function ()
[code to execute]
end

 
 

热更新(一) 之Lua语法的学习的更多相关文章

  1. 热更新-----为何使用lua进行热更

    事实上我们在安卓端是可以使用c#jit的,但是我们在ios上的代码是AOT(预先编译,静态编译)的,不能用c# jit(实时编译,即时编译). ios不能用c#热更是因为启动了CPU的No eXecu ...

  2. 热更新解决方案--xlua学习笔记

    一.热更新方案简介 在Unity游戏工程中,C#代码(编译型语言)资源和Resources文件夹下的资源打包后都不可以更改,因此这部分内容不能进行热更新,而lua代码(解释型语言)逻辑不需要进行预编译 ...

  3. Unity热更新技术整理

    一.热更新学习介绍 1.什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新 ...

  4. Java 热更新 Groovy 实践及踩坑指南

    Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...

  5. ios app 实现热更新(无需发新版本实现app添加新功能)

    目前能够实现热更新的方法,总结起来有以下三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的iOS应用 ios app可以在运行时从服务器拉取最新的js文件到 ...

  6. Unity3D 热更新方案(集合各位专家的汇总)

    http://blog.csdn.net/guofeng526/article/details/52662994 热更新”这个词,在Unity3D的应用下,是有些语义错误的,但是作为大家都熟知的一项技 ...

  7. ios app 实现热更新(无需发新版本号实现app加入新功能)

    眼下可以实现热更新的方法,总结起来有下面三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的ios应用 ios app能够在执行时从server拉取最新的js ...

  8. Unity官方发布热更新方案性能对照

    孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda •  什么是热更新 •  为何要热更新 •  怎样在iOS 上对 ...

  9. Unity应用的iOS热更新

    Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda •  什么是热更新 •  为何要热更新 •  如何在iOS 上对Unity 应用进行热更新 • ...

随机推荐

  1. Python之单元测试框架unittest

    创建class继承unittest,每一个测试用例是以test开头的函数,先执行setup,然后用例按照字母的顺序执行,然后执行teardown import unittest class demo( ...

  2. springboot 2.0 自定义redis自动装配

    首先创建maven项目 pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xm ...

  3. django-redis缓存

    1.安装django依赖包 pip install djange-redis==4.8.0 2.配置文件settings  需要开启redis服务 sudo service redis start,否 ...

  4. liquibase使用

    1. 创建表 drop database if exists mybatis; create database mybatis; use mybatis; create table mybatis.C ...

  5. 7.25 8figting!

    TEXT 87 Fund management基金管理   A Miller's tale 米勒传奇(陈继龙编译) Dec 7th 2006 From The Economist print edit ...

  6. Linux安装centos7

    安装 选择安装centos7,按回车 进入到安装界面: 选择我要自定义分区,然后点击左上角done: 然后自定义分区(swap分区一般为内存的2倍,我这里用的虚拟机截的图,所以内存给的少,具体按照自己 ...

  7. 12. Integer to Roman (HashTable)

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  8. ios图片的拉伸

    http://blog.csdn.net/q199109106q/article/details/8615661 - (UIImage *)stretchableImageWithLeftCapWid ...

  9. jQuery的选择器的总结

    一.简单选择器 // $(function () { // $("#box").css("color","red") // }) // 这个 ...

  10. SuSE 网卡配置模板

    heidsoft:/etc/sysconfig/network # cat ifcfg.template ## This is a template for a network interface c ...