您的位置:首页 > 编程语言 > Lua

Lua_ uLua_Lua和C#变量交互_018

2017-09-09 10:28 393 查看

反射方式

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 () {

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: