14.Lua调用CSharp-拓展方法
14.1 知识点
准备工作
LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson14_Lua调用CSharp_拓展方法");
拓展方法
在C#中定义测试类和工具类
public class Lesson14_TestClass
{
public string name = "Lesson14_Lua调用CSharp_拓展方法测试类";
public void Speak(string str)
{
Debug.Log(name + "说话:" + str);
}
public static void Eat()
{
Debug.Log("Lesson14_TestClass吃东西");
}
}
public static class Lesson14_Tools
{
//Lesson14_TestClass的拓展方法
public static void Move(this Lesson14_TestClass testClass)
{
Debug.Log(testClass.name + "开始移动");
}
}
在Lua脚本中调用静态方法、成员方法、拓展方法并做对比
--得到类 需要在CustomSettings中添加类 重新生成
Lesson14_TestClass = Lesson14_TestClass
--实例化类对象
local Lesson14_testClass = Lesson14_TestClass()
--调用静态方法 类名.静态方法()
Lesson14_TestClass.Eat()--Lesson14_TestClass吃东西
--调用成员方法 类实例:成员方法()
Lesson14_testClass:Speak("哈哈哈哈")--Lesson14_Lua调用CSharp_拓展方法测试类说话:哈哈哈哈
--调用拓展方法 类实例:拓展方法方法()
--拓展方法非常特别 需要在CustomSettings中 为Lesson14_testClass添加延伸类型固定写法
--_GT(typeof(Lesson14_TestClass)).AddExtendType(typeof(Lesson14_Tools)),
Lesson14_testClass:Move()--Lesson14_Lua调用CSharp_拓展方法测试类开始移动
14.2 知识点代码
Lesson14_Lua调用CSharp_拓展方法.lua
print('我是Lua脚本 Lesson14_Lua调用CSharp_拓展方法')
print("**********知识点一 拓展方法************")
--得到类 需要在CustomSettings中添加类 重新生成
Lesson14_TestClass = Lesson14_TestClass
--实例化类对象
local Lesson14_testClass = Lesson14_TestClass()
--调用静态方法 类名.静态方法()
Lesson14_TestClass.Eat()--Lesson14_TestClass吃东西
--调用成员方法 类实例:成员方法()
Lesson14_testClass:Speak("哈哈哈哈")--Lesson14_Lua调用CSharp_拓展方法测试类说话:哈哈哈哈
--调用拓展方法 类实例:拓展方法方法()
--拓展方法非常特别 需要在CustomSettings中 为Lesson14_testClass添加延伸类型固定写法
--_GT(typeof(Lesson14_TestClass)).AddExtendType(typeof(Lesson14_Tools)),
Lesson14_testClass:Move()--Lesson14_Lua调用CSharp_拓展方法测试类开始移动
Lesson14_Lua调用CSharp_拓展方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson14_Lua调用CSharp_拓展方法 : MonoBehaviour
{
void Start()
{
LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson14_Lua调用CSharp_拓展方法");
}
}
public class Lesson14_TestClass
{
public string name = "Lesson14_Lua调用CSharp_拓展方法测试类";
public void Speak(string str)
{
Debug.Log(name + "说话:" + str);
}
public static void Eat()
{
Debug.Log("Lesson14_TestClass吃东西");
}
}
public static class Lesson14_Tools
{
//Lesson14_TestClass的拓展方法
public static void Move(this Lesson14_TestClass testClass)
{
Debug.Log(testClass.name + "开始移动");
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com