Unity中使用 slua --- 调用c#方法
2017-07-20 15:03
1331 查看
slua下载地址:https://github.com/pangweiwei/slua
1.在使用slua 每次make 最后都执行一次claer
2.在你需要调用的c#类中添加 [CustomLuaClass] 特性
绑定在Camera的脚本
绑定Gameobject的脚本(可以随便创建一个绑定)
lua文件
1.在使用slua 每次make 最后都执行一次claer
2.在你需要调用的c#类中添加 [CustomLuaClass] 特性
绑定在Camera的脚本
using UnityEngine; using System.Collections; using SLua; [CustomLuaClass] public class ChatRoom : MonoBehaviour { //在别的项目实现的Tcp Socket private Server sever = null; // Use this for initialization void Start () { sever = new Server("127.0.0.1", 6523); } // Update is called once per frame void Update () { } /// <summary> /// 连接服务器 /// </summary> //slua 要调用的方法 public void Connect() { sever.Connect(); } //slua要调用的方法 public void OnClickMsgSendButEvent(string text) { string[] setext = { text }; sever.SendMessage(sever.BuildDataPackage(10011, setext)); } }
绑定Gameobject的脚本(可以随便创建一个绑定)
using UnityEngine; using System.Collections; using SLua; using System.IO; public class ChatRoomManager : MonoBehaviour { LuaSvr lua_Svr; LuaTable self; LuaFunction start; private void Awake() { lua_Svr = new LuaSvr(); LuaState.loaderDelegate = ((string fn) => { string path = Directory.GetCurrentDirectory() + "/Assets/Resources/" + fn; Debug.Log(path); return File.ReadAllBytes(path); }); lua_Svr.init(null, () => { self = (LuaTable)lua_Svr.start("ChatRoomClient.lua"); }); } // Use this for initialization void Start () { DontDestroyOnLoad(gameObject); } // Update is called once per frame void Update () { } }
lua文件
import "UnityEngine" if not UnityEngine.GameObject then error("Click Make/All to generate lua wrap file") end function main( ... ) -- body print("Start ConnectServer"); local ca = GameObject.Find("Main Camera"); local cs = ca:GetComponent("ChatRoom"); cs:Connect(); print("Success Server"); local sendBut = GameObject.Find("Canvas/Send"); local btn = sendBut:GetComponent("Button") if not sendBut then error("sendBut is nil"); end btn.onClick:AddListener(function () -- body print("Button"); local msg = GameObject.Find("Canvas/Msg/Text"); local mtext = msg:GetComponent("Text"); cs:OnClickMsgSendButEvent(mtext.text); local text1 = GameObject.Find("Canvas/Image/Text"); local textt = text1:GetComponent("Text"); textt.text = mtext; end); end
相关文章推荐
- Unity C# 使用反射,利用字符串作为泛型参数调用泛型方法。
- Unity SLua 如何调用Unity中C#方法
- Unity SLua 如何调用Unity中C#方法
- Unity中使用C#脚本调用JS脚本的使用方法
- Unity SLua 如何调用Unity中C#方法
- Unity-Android通信:AndroidJava 使用Unity c#编写Android程序调用任何方法
- [Unity] .lua脚本调用C#方法的一小点坑
- 使用C#调用Java带MIME附件WebService方法的初步设想
- Android使用ksoap2调用C#中的webservice函数方法
- C#使用异步方式调用同步方法
- jQuery中使用getJSON方法调用C#的后台方法
- 使用JQuery从客户端调用C#方法
- (转) C#异步调用使用匿名方法Lambda表达式
- 使用JQuery从客户端调用C#方法
- 一种ACM评判内核简易实现 使用C# WEB调用C++编译器的方法
- 关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
- C# 使用 Environment.GetCommandLineArgs 方法 制作*.exe和参数 供其他程序调用
- C# 使用MarshalByRefObject跨程序调用方法
- 在C#中使用反射调用internal的方法
- 关于C#Winform线程调用窗体的使用方法以及窗体的单一显示