Unity Xlua 之 Lua调用C#(一)
一.Lua使用C#类
public class MyClass1
{
public void Test(string str)
{
Debug.Log("MyClass1:"+str);
}
}
namespace Zzs
{
public class MyClass2
{
public void Test(string str)
{
Debug.Log("MyClass2:"+str);
}
}
}
GameObject = CS.UnityEngine.GameObject
local obj1 = GameObject("zzs")
local myclass1 = CS.MyClass1()
myclass1:Test("123")
local myclass2 = CS.Zzs.MyClass2()
myclass2:Test("456")
local findTrans = GameObject.Find("zzs").transform
findTrans.gameObject:AddComponent(typeof(CS.TestMono))
print(findTrans.position)
Vector3 = CS.UnityEngine.Vector3
findTrans:Translate(Vector3.right)
print(findTrans.position)
二.Lua使用C#Enum
public enum MyEnum
{
Idle = 0,
Run = 2,
Atk = 4
}
GameObject = CS.UnityEngine.GameObject
PrimitiveType = CS.UnityEngine.PrimitiveType
GameObject.CreatePrimitive(PrimitiveType.Capsule)
MyEnum = CS.MyEnum
local a = MyEnum.Idle
print(a)
local b = MyEnum.__CastFrom(2)
print(b)
local c = MyEnum.__CastFrom("Atk")
print(c)
三.Lua使用C#数组,列表,字典
public class Lesson
{
public int[] array = {1,2,3,4,5};
public List<int> list = new List<int>();
public Dictionary<int,string> dic = new Dictionary<int, string>();
}
local Lesson = CS.Lesson()
local arr = Lesson.array
print(arr[0])
for i = 0, arr.Length - 1, 1 do
print(arr[i])
end
Array = CS.System.Array
print("*********************************")
local arr1 = Array.CreateInstance(typeof(CS.System.Int32),10)
print(arr1.Length)
arr1[0] = 999
arr1[1] = 666
for i = 0, arr1.Length - 1, 1 do
print(arr1[i])
end
print("=========List=========")
local list = Lesson.list;
list:Add(1)
list:Add(22222)
print(list[0])
print(list[1])
print(Lesson.list[1])
print("旧版List")
local list2 = CS.System.Collections.Generic["List`1[System.String]"]()
list2:Add("zzs")
list2:Add("wy")
list2:Add("pnb")
for i = 0, list2.Count - 1, 1 do
print(list2[i])
end
print("新版List")
List_String = CS.System.Collections.Generic.List(CS.System.String)
local list3 = List_String()
list3:Add("zzs")
list3:Add("wy")
list3:Add("pnb")
for i = 0, list3.Count - 1, 1 do
print(list3[i])
end
print("===========Dic==========")
local dic = Lesson.dic
dic:Add(1,"zzs")
dic:Add(2,"wy")
dic:Add(3,"pnb")
print(dic[1])
for key, value in pairs(dic) do
print(key,value)
end
Dic_String_Vector3 = CS.System.Collections.Generic.Dictionary(CS.System.String,CS.UnityEngine.Vector3)
local dic = Dic_String_Vector3()
dic:Add("333",CS.UnityEngine.Vector3.right)
print(dic:get_Item("333"))
dic:set_Item("333",CS.UnityEngine.Vector3.zero)
print(dic:get_Item("333"))