Unity Xlua 之 Lua调用C#(一)

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
}

Unity Xlua 之 Lua调用C#(一)_第1张图片

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])
--旧版Lua中使用List
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
--新版Lua中使用List
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"))--String为Key的时候使用["xxx"]取不到
dic:set_Item("333",CS.UnityEngine.Vector3.zero)
print(dic:get_Item("333"))

你可能感兴趣的:(Xlua,lua,unity,c#)