Lua_ uLua_Lua和C#变量交互_018

来源:互联网 发布:linux系统编程 康华 编辑:程序博客网 时间:2024/06/07 08:38

反射方式

using UnityEngine;using System.Collections;using LuaInterface;public class AccessingLuaVariables01 : MonoBehaviour {    private string script = @"            luanet.load_assembly('UnityEngine')            GameObject = luanet.import_type('UnityEngine.GameObject')            ParticleSystem = luanet.import_type('UnityEngine.ParticleSystem')            particles = {}            for i = 1, Objs2Spawn, 1 do                local newGameObj = GameObject('NewObj' .. tostring(i))                local ps = newGameObj:AddComponent(luanet.ctype(ParticleSystem))                --local ps = newGameObj:AddComponent('ParticleSystem') PS:Unity5.x已经废弃这种方式,Unity4.x可用--                ps:Stop()                table.insert(particles, ps)            end            var2read = 42        ";    // Use this for initialization    void Start () {        LuaState l = new LuaState();        // Assign to global scope variables as if they're keys in a dictionary (they are really)        l["Objs2Spawn"] = 5;        l.DoString(script);        // Read from the global scope the same way        print("Read from lua: " + l["var2read"].ToString());        // Get the lua table as LuaTable object        LuaTable particles = (LuaTable)l["particles"];        // Typical foreach over values in table        foreach( ParticleSystem ps in particles.Values )        {            ps.Play();        }    }    // Update is called once per frame    void Update () {    }}

非反射方式

using UnityEngine;using System.Collections;using LuaInterface;public class LuaTest02 : MonoBehaviour {     string var=@"sum =10";     string script =@"        ParticleSystem = UnityEngine.ParticleSystem;        GameObject = UnityEngine.GameObject;        for i=1,sum, 1 do            obj = GameObject('obj');            obj:AddComponent(ParticleSystem:GetClassType())                 end    ";    // Use this for initialization    void Start () {        LuaScriptMgr mgr = new LuaScriptMgr();        mgr.Start();//必须有这句话,否则Lua脚本无法正常执行        LuaState l = mgr.lua;        l.DoString(var);        l.DoString(script);    }    // Update is called once per frame    void Update () {    }}

原创粉丝点击