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.InputField) Button)) - -ボタンを取得します
tt=a.GameObject.Find("Tapp"):GetComponent(typeof(a.UI.Text)) --テキストを取得しますbtn.onClick:AddListener(Clickone) -- メソッド デリゲートを取得します
Unity で Lua コードを使用する:
1.機能【CSharpCallLua】のご紹介
2.名前空間を導入します: 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 ファイル 3 つのコード ブロック:
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