C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System.IO;
using System.Text;
using UnityEngine.UI;
public class TestXLua : MonoBehaviour
{
LuaEnv lua;
void Start()
{
lua = new LuaEnv();
//加载Lua
lua.AddLoader(LoadLua);
lua.DoString("require 'TestLua'");
}
byte[] LoadLua(ref string file)
{
Debug.Log(file);
string slua = File.ReadAllText(Application.dataPath + "/Lua/" + file + ".lua");
byte[] bytes = new UTF8Encoding().GetBytes(slua);
return bytes;
}
void OnDestroy()
{
lua.Dispose();
}
}
C#调用泛型参数方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class Player
{
public void PFunction(List<string> strArr)
{
Debug.Log("PFunction");
foreach (string item in strArr)
{
Debug.Log(item);
}
}
}
Lua
player = CS.Player()
TheTable = {
"aa","bb","cc"
}
player:PFunction(TheTable)
调用泛型方法的方法
C#
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class Player
{
public T PFunction<T>(T a, T b) where T : IComparable
{
if (a.CompareTo(b) < 0)
{
return b;
}
else
{
return a;
}
}
public void PMethodI()
{
int m = 0;
int a = 5;
int b = 9;
m = PFunction<int>(a,b);
Debug.Log(m);
}
public void PMethodS()
{
string m = "";
string a = "A";
string b = "f";
m = PFunction<string>(a, b);
Debug.Log(m);
}
}
Lua
player = CS.Player()
player:PMethodI()
player:PMethodS()
通过调用扩展方法,间接完成对C#泛型方法的实现
C#
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class Player
{
[LuaCallCSharp]
public T PFunction<T>(T a, T b) where T : IComparable
{
if (a.CompareTo(b) < 0)
{
return b;
}
else
{
return a;
}
}
//public void PMethod()
//{
// int m = 0;
// int a = 5;
// int b = 9;
// m = this.Ext_PFunction(a, b);
// Debug.Log(m);
//}
}
[LuaCallCSharp]
public static class Extension_Player
{
//扩展方法
public static int Ext_PFunction(this Player player,int a,int b)
{
if (a < b)
{
return b;
}
else
{
return a;
}
}
}
Lua
player = CS.Player()
print(player:Ext_PFunction(5,9))
其他