uLua的基础学习

    ”热更新“ “热修复”都是在程序应用中常见的词汇 按照理解 就是动态下修改代码 从而更新代码 而不需要发布新的版本 修复或者增加新功能 常见的如:苹果app应用中 开发者无需从新提交版本审核 直接就可以动态下增加功能与修改BUG 避免长时间应用审核以及多次被苹果拒绝而造成的成本。

Step1:下载最新uLua插件 ulua_v1.25.unitypackage 导入工程

Step2:我们按照它的Demo来学习相关知识

Step3: 脚本里都要导入命名空间 LuaInterface


Demo1 : 输出 hello world

demo的写法: 这样 unity输出控制台就能输出hello world  是不是一定要这样写呢? 我尝试了下另外一种写法 

void  Start()

{

 LuaState l = new LuaState() ;

string  str = @"print('hello world')" 

l .DoString(str) 

}

我的写法:我是这么想的 为啥不可以直接输出呢? 在单独lua编写中 写一个字符串是var = 'hello world'   现在写在untity里面 那么就要转换 那么 我猜 I,DoString(str)的作用就是在unitu里执行lua代码转换成可以识别的unity代码  然后根据内部的封装规则 规定好 I["var"]是拿到这个字符串 注:string = @"" ; @的作用是自动换行陈列 没有其他的含义

void Start()

{

LuaState l = new LuaState()

string str = "var = @'hello world'"

l.DoString(str) 

print(l["var"].ToString()) 

}


Demo2:  用非反射的方式创建一个粒子特效对象

demo写法:uLua 都是将要执行的uLua代码写成string类型 然后用封装的类对调用它 LuaScriptMgr 配套使用lua.Start() ;  DoString(script)语法的含义是在c#中执行Lua语句   start()里面的语句我是这么理解 首先你要告诉lua 我要引入c#中unityEngine头文件的对象 然后告诉它具体的类型 

然后创建对象 然后添加组件

public class CreatGameObject:MonBehaviour

{

private string script = @"

luanet.load_assembly('UnityEngine')

GameObject = UnityEngine.GameObject

ParticleSystem = UnityEngine.ParticleSystem

local newGameObj = GameObject('NewObj')

newGameObj:AddComponent(ParticleSystem.GetClassType())" ;

void Start()

{

LuaScriptMgr lua = new LuaScriptMgr() ;

lua.Start();

lua.DoString(script) ;

}


public class AccessingLuaVariables:MonoBehaviour

{

  // cstolua要求必须先定义变量才能使用

 private string var = @"Objs2Spawn = 0" ;

private string script = @"

 lucent.load_assembly('UnityEngine')

ParticleSystem = UnityEngine.ParticleSystem

particles = {}

for i = 1,Objs2Spawn,1 do

local newGameObj = GameObject('NewObj'..toString(i))

local ps = newGameObj:AddComponent(ParticleSystem.GetClassType())

ps.Stop();

table.insert(particle,ps)

end

var2read = 42

" ;

void Start()

{

   LuaScriptMgr mgr = new LuaScriptMgr()

  mgr.Start() ;

LuaState l = mgr.lua ;

l.DoString(var) ;

l["Objs2Spawn"] = 5 ;

l.DoString(script);

print("Read from Lua:" + l["var2read"].ToString())

LuaTable particles = (LuaTable)l["particles"] ;


foreach(ParticleSystem ps in particles.Values)

{

ps.Play() ;

}

}

}


持续更新


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容