美文网首页
uLua的基础学习

uLua的基础学习

作者: Unity与iOS的灵魂小白 | 来源:发表于2017-06-12 10:53 被阅读161次

        ”热更新“ “热修复”都是在程序应用中常见的词汇 按照理解 就是动态下修改代码 从而更新代码 而不需要发布新的版本 修复或者增加新功能 常见的如:苹果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() ;

    }

    }

    }


    持续更新


    相关文章

      网友评论

          本文标题:uLua的基础学习

          本文链接:https://www.haomeiwen.com/subject/guifqxtx.html