C#如何访问Lua中的属性(3)
2016-08-19 00:37
429 查看
参考:
http://www.myexception.cn/c-sharp/1881698.html
Lua如何访问C#中的属性
1) .LUA如何访问Unity提供的对象?
a.如何new系统对象?
b.如何访问对象的属性?
c.如何访问对象的函数?
2) .LUA如何访问在C#中自定义的对象?
a.如何new自定义对象?
b.如何访问对象的属性?
c.如何访问对象的函数?
单击“第四节。。。。。” 以下是输出内容
但是在Lua语言中,我实在没有找到 怎么用Lua代码重写,我只好写在其他c#函数里,实现相同的效果。若哪位大神能帮助小弟,小弟必须谢谢你哈!
http://www.myexception.cn/c-sharp/1881698.html
Lua如何访问C#中的属性
1) .LUA如何访问Unity提供的对象?
a.如何new系统对象?
b.如何访问对象的属性?
c.如何访问对象的函数?
2) .LUA如何访问在C#中自定义的对象?
a.如何new自定义对象?
b.如何访问对象的属性?
c.如何访问对象的函数?
/* Lua如何访问C#中的属性 1) .LUA如何访问Unity提供的对象? a.如何new系统对象? b.如何访问对象的属性? c.如何访问对象的函数? 2) .LUA如何访问在C#中自定义的对象? a.如何new自定义对象? b.如何访问对象的属性? c.如何访问对象的函数? */ using UnityEngine; using System.Collections; public class Hero{ private string _name; private int _hp, _ap, _mp; public Hero(string name, int hp, int ap, int mp) { this._name = name; this._hp = hp; this._ap = ap; this._mp = mp; } public int Hp { set { } get { return this._hp; } } public int Ap { set { } get { return this._ap; } } public int Mp { set { } get { return this._mp; } } public void PrintInfor() { Debug.Log("hp:" + this._hp + "__ap:" + this._ap + "__mp:" + this._mp); } public int AddHp(int add) { Debug.Log("Lua调用CS的AddHp Lua 传的参数 add:" + add); this._hp += add; return _hp; } public int AddAp(int add) { Debug.Log("Lua调用CS的AddAp Lua传的参数 add:" + add); this._ap += add; return _ap; } public int AddMp(int add) { Debug.Log("Lua调用CS的AddMp Lua传递的参数 add:" + add); this._mp += add; return _mp; } public void Destroy() { this._name = null; } }
/* C#如何访问Lua中的属性 1) .C#如何访问LUA中的属性? 2) .C#如何访问LUA中的函数? 3) .C#如何访问LUA中的表? */ using UnityEngine; using System.Collections; // using LuaInterface; public class Main : MonoBehaviour { private static Main instance; public string ss; public TextAsset tt; // Use this for initialization void Start () { instance = this; } // Update is called once per frame void Update() { } //C#调用LUA void testCSharp_GoLua() { LuaState lua = new LuaState(); lua.DoString("print'hello world'"); } //C#调用LUAFile void testCSharp_GoLuaFile() { LuaState lua = new LuaState(); //lua.DoFileFromAge(this, "Test0.lua"); //TextAsset file = (TextAsset)Resources.Load("test0", typeof(TextAsset)); //if (file == null) //{ // Debug.Log("sdfds"); //} //else { // Debug.Log("加载成功"); //} lua.DoFile("test0"); } void testCSharp_GoLuaInfor() { LuaState lua = new LuaState(); lua.DoFile("test0"); // 访问LUA中的表 LuaTable configTable = lua.GetTable("config"); Debug.Log("name:" + configTable["name"]); Debug.Log("age:" + configTable["age"]); Debug.Log("qq:" + configTable["qq"]); // 访问Lua 中的基础属性 Debug.Log("Name:" + lua.GetString("Name")); Debug.Log("Age" + lua.GetNumber("Age")); Debug.Log("isBoy" + lua["isBoy"]); //访问Lua中的函数 LuaFunction luaFun = lua.GetFunction("PrintFromLua"); if (luaFun != null) { System.Object[] obResult = luaFun.Call(100); Debug.Log("obResult" + obResult[0]); } } // Lua调用 c# void testLua_GOCSharp() { LuaState lua = new LuaState(); lua.DoFile("test1"); GameObject.Find("ageObj").AddComponent<Animation>(); } void OnGUI() { if (GUILayout.Button("第一节.C#调用LUA")) { testCSharp_GoLua(); } if (GUILayout.Button("第二节.C#调用LUA File")) { testCSharp_GoLuaFile(); } if (GUILayout.Button("第三节.C#调用LUA 信息")) { testCSharp_GoLuaInfor(); } if (GUILayout.Button("第四节.LUA调用C# 信息")) { testLua_GOCSharp(); } } }
--[[ http://www.myexception.cn/c-sharp/1881698.html @author:涛涛 @des:测试Lua访问c#的一些东东 @date:2016-8-18 --]] --访问c#中的系统的对象 luanet.load_assembly("UnityEngine"); GameObject = luanet.import_type("UnityEngine.GameObject"); Vector3 = luanet.import_type("UnityEngine.Vector3"); luanet.load_assembly('Assembly-CSharp'); local newObj = GameObject('ageObj'); --访问C#中的系统的对象的函数 --nimation = luanet.import_type("UnityEngine.Animation"); --newObj:AddComponent<span style="font-family:Arial, Helvetica, sans-serif;">(</span>Animation); --访问C#中的系统的对象的属性 newObj.transform.position = Vector3(10, 20, 30); --访问C#中的自定义的对象 Hero=luanet.import_type("Hero"); --newC#中的自定义的对象 local heroa = Hero("大哥", 100, 200, 300); --访问C#中的自定义的对象的函数 heroa:PrintInfor(); --访问C#中的自定义的对象的函数 来回传值 print("LUA hp:", heroa:AddHp(10)); print("LUA ap:", heroa:AddAp(20)); print("LUA mp:", heroa:AddMp(30)); print("test1.lua执行完毕。。。");
单击“第四节。。。。。” 以下是输出内容
--newObj:AddComponent<span style="font-family:Arial, Helvetica, sans-serif;">(</span>Animation);在 test1.txt 中这句有错误,这还是较老版本的,语法 ,新的版本 是 gameObject.AddComponent<Animation>();
但是在Lua语言中,我实在没有找到 怎么用Lua代码重写,我只好写在其他c#函数里,实现相同的效果。若哪位大神能帮助小弟,小弟必须谢谢你哈!
相关文章推荐
- c# 属性如何自定义,以及为什么要定义属性而不是直接访问公共字段
- C#如何访问Lua中的属性(1)
- VB6 中如何访问C# Dll 中的方法、属性以及事件
- VB6 中如何访问C# Dll 中的方法、属性以及事件
- Lua中访问C#中的属性和方法-特殊情况-带有out和ref关键字
- C#中如何使用访问修饰符来修饰属性
- C#中如何给自定义类的只读属性赋值
- 如何:定义抽象属性(C# 编程指南)
- 如何使用java代码来访问managed-bean 的属性?
- 如何使用C#访问POP3服务器(转)
- 如何在aodv协议中访问node的各项属性
- 如何在aodv协议中访问node的各项属性
- 如何使用C#访问POP3服务器(英文)
- 如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性
- c#学习笔记三 如何访问另一个页面的控件数据
- C#反射(有参构造+访问私有属性)
- C#如何让SaveFileDialog框访问本地网络中其它电脑的“我的电脑”(未解决)
- 在c#中如何在WINDOWS FORM 中访问超级链接?
- 自己总结的如何用C#查找webBrowser页面中input的checkbox的checked属性!
- 开发应用时如何利用C#自定义属性