赞
踩
Lua上使用Unity代码:
a=CS.UnityEngine
a.GameObject("Lua") --创建新对象
camera=a.GameObject.Find('Main Camera') --查找名字
camera=a.GameObject.FindWithTag('MainCamera') --查找标签
input1=a.GameObject.Find("Name"):GetComponent(typeof(a.UI.InputField)) --获取输入框
btn = a.GameObject.Find("Res"):GetComponent(typeof(a.UI.Button)) --获取按钮
tt=a.GameObject.Find("Tapp"):GetComponent(typeof(a.UI.Text)) --获取文本btn.onClick:AddListener(Clickone) --获取方法委托
Unity上使用Lua代码:
1.引入特性[CSharpCallLua]
2.引入命名空间:using XLua;
3. 实例化对象 LuaEnv lua = new LuaEnv();
4.lua.DoString("require('Lua文件名')");//请求Lua文件内容
5.lua.Global.Get<>("Lua方法或模板");实例化Lua属性
加载Txt文件
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using XLua;
-
- /*
- *创建者:
- *创建时间:
- *描述:只能加载Txt的文件
- *版本:
- */
- public class Test : MonoBehaviour
- {
- public int id = 1001;
- public void GetOne()
- {
- print("Hello");
- }
- public static void GetTwo()
- {
- print("World");
- }
- [CSharpCallLua]
- public delegate void Opens();//通过委托去映射Lua文件内的属性,方法
-
-
- LuaEnv lua;
- void Start()
- {
- GameObject g = new GameObject("天才");//创建空物体
-
- lua = new LuaEnv();
-
- lua.DoString("require('One')");//请求Lua文件内容
- Opens op = lua.Global.Get<Opens>("Init");
- op();
-
- }
-
- void OnDestory()
- {
- lua.Dispose();//关闭资源
- }
- }
加载Lua文件,可单独创建Lua文件夹去存放Lua文件
-
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using Unity.VisualScripting;
- using UnityEngine;
- using XLua;
-
- /*
- *创建者:
- *创建时间:
- *描述:
- *版本:
- */
-
- public class Person
- {
- public int id;
- public string name;
-
- }
-
- public class Test3 : MonoBehaviour
- {
- LuaEnv lua;
- Person p;
- [CSharpCallLua]
- public delegate int Count(object a, object b);//带参数的委托
-
- void Start()
- {
- lua = new LuaEnv();
- lua.AddLoader(FileLoad); //添加加载器(用于加载Lua文件)
- lua.DoString("require('Three')");//请求获取Lua文件
-
- //读取Lua数据
- int a = lua.Global.Get<int>("a");
- float b = lua.Global.Get<float>("b");
- string c = lua.Global.Get<string>("c");
- bool d = lua.Global.Get<bool>("d");
- print(a + "\t" + b + "\t" + c + "\t" + d);
-
- //通过类的方式映射Lua类(模板)
- p = lua.Global.Get<Person>("Student");
- print(p.id + "\t" + p.name);
- //通过集合映射Lua类(模板)
- List<object> list = lua.Global.Get<List<object>>("Student");
- foreach (var item in list)
- {
- print(item);
- }
- //通过字典映射Lua类(模板)
- Dictionary<object, object> dic = lua.Global.Get<Dictionary<object, object>>("Student");
- foreach (var item in dic)
- {
- print(item.Key + "\t" + item.Value);
- }
-
- //通过带参委托映射Lua中带参数的方法
- Count ct = lua.Global.Get<Count>("Sum");
- print(ct(1, 2));
-
-
- //用于获取带多个参数的Lua文件方法
- LuaFunction lf = lua.Global.Get<LuaFunction>("Sum");
- object[] obj = lf.Call(1, 2);
- foreach (var item in obj)
- {
- print(item);
- }
-
- }
- //以字节数组的形式存放Lua文件
- Byte[] FileLoad(ref string name)
- {
- string s = Application.dataPath + "/Lua/" + name + ".lua";
-
- return File.ReadAllBytes(s);//读取文件所有的字节
- }
-
- void OnDestory()
- {
- lua.Dispose();//关闭资源
- }
- }
Lua文件Three代码块:
- a=1
- b=1.2
- c='hello'
- d=true
- Student={
- id=1001,
- name="小霸王",
- Study=function()
- print(Student.name..'爱学习')
- end,
- 1111
- }
- function Sum(a,b)
- c=a+b
- return c
- end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。