
Unity3d热更新
千羽千寻
生命要浪费在美好的故事上
展开
-
MAC 环境下的Lua配置
下载最新版的lua-5.2.0 ( http://www.lua.org/ftp/ )然后解压运行“终端”进入到该文件夹下 ,主要是cd 【文件夹名】在“终端”输入 make macosx (回车)在“终端”输入 make test (回车) 5.输入“sudo make install”命令,会要求输入Password: 输入相应密码(你的密码),然后回车就自动安装了 6.下载sublime ...转载 2018-03-08 15:01:13 · 334 阅读 · 0 评论 -
Lua_垃圾回收_013
Lua 采用了自动内存管理。 这意味着你不用操心新创建的对象需要的内存如何分配出来, 也不用考虑在对象不再被使用后怎样释放它们所占用的内存。Lua 运行了一个垃圾收集器来收集所有死对象 (即在 Lua 中不可能再访问到的对象)来完成自动内存管理的工作。 Lua 中所有用到的内存,如:字符串、表、用户数据、函数、线程、 内部结构等,都服从自动管理。Lua 实现了一个增量标记-扫描收集器。 它使用这两...转载 2018-03-08 15:08:52 · 170 阅读 · 0 评论 -
Lua_高级特性_014
面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。以下几种编程语言都支持面向对象编程:C++JavaObjective-CSmalltalkC#Ruby面向对象实现1) 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。2) 继承:继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,...转载 2018-03-08 15:09:14 · 268 阅读 · 0 评论 -
Lua_ uLua基础_015
什么是LuaInterfaceLuaInterface 是运行在.Net平台的Lua语言 Luainterface包含两个核心库一个是LuaInterface.dll,一个是Luanet.dll,我们可以通过LuaInterface完成Lua和C#(CLR)之间的互相调用为什么使用uLuauLua的原理是在Unity3d中解析字符串形式的Lua脚本,让Lua与C#相互传递参数和方法,这样可以以文本...转载 2018-03-08 15:09:40 · 219 阅读 · 0 评论 -
Lua_ uLua_C#中使用Lua_016
前期工作,导入ulua_v1.25.unitypackage,然后在工程中引入LuaInterface命名空间。方法一:using LuaInterface;// 常见一个Lua解释器LuaState lua = new LuaState();//创建全局变量 "num" and "str"lua["num"] = 2;lua["str"] = "a string";//创建空表...转载 2018-03-08 15:10:00 · 243 阅读 · 0 评论 -
Lua_ uLua_创建对象_017
反射模式using UnityEngine;using System.Collections;using LuaInterface;/// <summary>/// 反射调用方式是不推荐使用的,因为效率慢,推荐的是使用wrap的去反射模式,/// 这里还继续保留下来的原因在于,在某些特定环境下,反射还是有用途的,/// 去反射最大的弊端在于提前需要把C#的类导入到Lua中...转载 2018-03-08 15:10:27 · 186 阅读 · 0 评论 -
Lua_ uLua_Lua和C#变量交互_018
反射方式using UnityEngine;using System.Collections;using LuaInterface;public class AccessingLuaVariables01 : MonoBehaviour { private string script = @" luanet.load_assembly('UnityEngi...转载 2018-03-08 15:10:54 · 241 阅读 · 0 评论 -
Lua_ uLua_C#调用Lua方法_019
using UnityEngine;using System.Collections;using LuaInterface;public class CallLuaFunction_01 : MonoBehaviour { private string script = @" function luaFunc(message) ...转载 2018-03-08 15:11:27 · 248 阅读 · 0 评论 -
Lua_ uLua_Lua调用C#方法_020
反射方式 string str=@" luanet.load_assembly('UnityEngine'); GameObject = luanet.import_type('UnityEngine.GameObject'); ParticleSystem = luanet.import_type('UnityEngine.ParticleS...转载 2018-03-08 15:11:45 · 368 阅读 · 0 评论 -
Lua_ uLua协程_021
using UnityEngine;using System.Collections;using LuaInterface;public class LuaTest04 : MonoBehaviour { string s=@" function test() for i=1,5,1 do print('...转载 2018-03-08 15:12:21 · 186 阅读 · 0 评论 -
Lua_ Lua加载WWW_022
using UnityEngine;using System.Collections;using LuaInterface;public class LuaWWW : MonoBehaviour { LuaScriptMgr lua; string script = @" local WWW = UnityEngine.WWW ...转载 2018-03-08 15:12:42 · 825 阅读 · 0 评论 -
Lua_ Lua结合BundleManager实现网络热更新_023
创建简单脚本创建 lua_bundle_test.txt 内容很简单: print(‘从服务器加载,并执行成功啦’);使用BundleManager制作Bundle制作Bundle 配置Bundle 之后Build 将该目录剪切到其他目录比如G:\HttpFileServer将剪切的目录拖放到右侧 加载Lua代码并执行using UnityEngine;using System.Colle...转载 2018-03-08 15:13:06 · 211 阅读 · 0 评论 -
Lua_ Lua结合BundleManager实现网络热更新_023
创建简单脚本创建 lua_bundle_test.txt 内容很简单: print(‘从服务器加载,并执行成功啦’);使用BundleManager制作Bundle制作Bundle 配置Bundle 之后Build 将该目录剪切到其他目录比如G:\HttpFileServer将剪切的目录拖放到右侧 加载Lua代码并执行using UnityEngine;using System.Colle...转载 2018-03-08 15:14:22 · 245 阅读 · 0 评论 -
Lua_文件I/O_012
简单模式简单模式使用标准的 I/O 或使用一个当前输入文件和一个当前输出文件。以下为 file.lua 文件代码,操作的文件为test.lua(如果没有你需要创建该文件),代码如下:– 以只读方式打开文件 file = io.open(“C:/test.lua”, “r”)– 设置默认输入文件为 test.lua io.input(file)– 输出文件第一行 print(io.read())– ...转载 2018-03-08 15:08:35 · 169 阅读 · 0 评论 -
Lua_协同程序_011
Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂线程和协程的区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起...转载 2018-03-08 15:08:14 · 159 阅读 · 0 评论 -
Lua_元表(Metatable)_010
在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。当Lua试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否有一个叫”__add”的字段,若找到,则调...转载 2018-03-08 15:07:51 · 154 阅读 · 0 评论 -
Lua 之 面向对象 -- 继承
面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。 Lua的也是一种面向对象的语言,我们常见的面向对象的编程语言有:C++JavaObjective-CSmalltalkC#Ruby面向对象具有三大特征:封装、继承、多态对象由属性和方法组成。LUA中最基本的结构是table,所以需要用table来描述对象的属性。lua中的...转载 2018-03-08 15:02:34 · 151 阅读 · 0 评论 -
Lua --面向对象之多态
Lua中的多态和我们平时接触的java,C#中的多态还是有些相似的 只不过看起来没有我们接触的java和C#的代码看起来紧凑,整齐,下面是根据上一个案例进行改写的多态。--多态-- Meta classShape = {area = 0}-- 基础类方法 newfunction Shape:new (o) o = o or {} setmetatable(o, self) se...转载 2018-03-08 15:03:12 · 1796 阅读 · 0 评论 -
Lua require 相对路径
Lua中的路径系统和我们熟知的路径系统是不一样的。 当我们随便的输入一个不存在文件的名,如下面的代码一样 require("lib.lua")1就会出现以下的报错的信息no field package.preload['lib.lua'] no file 'D:\Lua\LuaProject\my_first_Lua\src\lib\lua.lua' no file 'D:\Lua...转载 2018-03-08 15:03:47 · 3173 阅读 · 0 评论 -
Lua_介绍_001
Lua是什么?Lua是一个精悍小巧的编程语言,可以直接使用解析器进行解析,不需要编译的过程。大多数功能都可以使用Lua完成,但是Lua的解析过程效率较慢,一般将经常更改的界面等资源使用Lua语言实现。Unity为什么使用Lua?热更新: 热更新就是可以再不重新下载客户端的前提下,更新游戏的内容(资源更新,逻辑更新) 游戏上线后,如果需要更换UI界面,或者游戏的逻辑,如果不使用热更新,就需要重新打包...转载 2018-03-08 15:04:21 · 211 阅读 · 0 评论 -
Lua_技术背景及优点_002
技术背景葡萄牙语 ‘Luna’(月亮) Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar ...转载 2018-03-08 15:04:47 · 260 阅读 · 0 评论 -
Lua_快速入门及变量_003
注释写一个程序,总是少不了注释的。在Lua中,你可以使用单行注释和多行注释。单行注释:连续两个减号“–”表示注释的开始,直到行末为止。多行注释:由“–[[” 表示注释开始,并 且一直延续到“]]–”为止。变量标识符 字母(letter)或者下划线开头的字母、下划线、数字序列。最好不要使用下划线加大写字母的标识符。 Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分...转载 2018-03-08 15:05:14 · 160 阅读 · 0 评论 -
Lua_运算符_004
逻辑运算符逻辑运算符认为false和nil是假(false),其他为真,0也是true. and和or的运算结果不是true和false,而是和它的两个操作数相关。 a and b – 如果a为false,则返回a,否则返回b a or b – 如果a为true,则返回a,否则返回b 关系运算符< > <= >= == ~= 这些操作符返回结果为false或者true; =...转载 2018-03-08 15:05:38 · 341 阅读 · 0 评论 -
Lua_语句_if语句_005
赋值语句赋值是改变一个变量的值和改变表域的最基本的方法。 如:a = “hello” .. “world” t.n = t.n + 1 例: a = {x = 1, y = 2, z = 3} a.x = a.x + 1 print(a.x)赋值语句在Lua中被强化了,它可以同时给多个变量赋值。变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。 例如:a,b,c,d = ...转载 2018-03-08 15:05:57 · 192 阅读 · 0 评论 -
Lua_语句_循环语句_006
while语句语法:while ( 条件判断 ) do 循环的语句块end 123打印1到10 【注】在Lua中没有+=操作repeat-until语句repeat 语句;until (条件判断);123for语句1. 数值for循环 第一,数值for循环:exp3可以省略默认为1for var=exp1,exp2,exp3 do loop-part ...转载 2018-03-08 15:06:17 · 231 阅读 · 0 评论 -
Lua_表结构_007
在Lua中的table类似C#中的字典,其实就是一个key-value键值对的数据结构。常用的方法1 table.concat (table [, sep [, start [, end]]]):concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep...转载 2018-03-08 15:06:45 · 238 阅读 · 0 评论 -
Lua_函数_008
函数可以看作程序员定义的操作,每个函数都会实现一系列的计算,然后(大多数时候)生成一个计算结果. ★ 必须先创建后使用! 函数体是一个语句块,定义了函数的具体操作.在函数体中可以定义只在该函数中有效的变量(局部变量).当执行到end语句的时候,函数调用结束.可以通过return语句返回一个指定的结果值.执行return语句后,被挂起的主程序在调用处恢复执行,继续...转载 2018-03-08 15:07:10 · 181 阅读 · 0 评论 -
Lua_模块与包_009
模块声明Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。以下为创建自定义模块 module.lua,文件代码格式如下:– 文件名为 module.lua – 定义一个名为 module 的模块 module = {}– 定义一个常量 module.constant = “...转载 2018-03-08 15:07:29 · 209 阅读 · 0 评论 -
Lua_ULua创建基本的游戏对象
using System.Collections;using System.Collections.Generic;using UnityEngine;using LuaInterface;public class UnityCallLua : MonoBehaviour { string str = @" luanet.load_assembly('Unity...转载 2018-03-08 15:14:41 · 327 阅读 · 0 评论