![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lua如何调用C#
Lua调用C#的知识学习
我是赵某人
不求甚解,格物致知
展开
-
Lua调用C#语言十三(泛型函数)
print("*****************lesson5 泛型函数的相关知识******************");local obj = CS.Lesson12();local father = CS.Lesson12.TestFather();local child = CS.Lesson12.TestChild();--支持有约束有参数的泛型obj:TestFun1(father,child);obj:TestFun1(child,father);--不支持没有约束的泛型函原创 2021-06-25 17:03:52 · 365 阅读 · 0 评论 -
Lua调用C#语言十二(协程)
print("*****************Lua调用C# 协程相关知识点******************");--C#中协程启动都是继承了Mono类,通过里面的启动函数StartCoroutineGameObject=CS.UnityEngine.GameObject;WaitForSeconds=CS.UnityEngine.WaitForSeconds;--xlua提供的一个工具表--一定要通过require调用后才能使用util=require("xlua.util");原创 2021-06-25 15:13:08 · 249 阅读 · 0 评论 -
Lua调用C#语言十一(Lua和系统类以及委托相互调用)
给Unity中的Button、Toggole添加点击事件C#代码:#region Lua和系统类以及委托相互调用public static class Lesson10{ [XLua.LuaCallCSharp] public static List<Type> LuaCallCSharpList = new List<Type> { typeof(GameObject), typeof(Rigidbody) }原创 2021-06-25 11:12:34 · 255 阅读 · 0 评论 -
Lua调用C#语言十(Lua实现Unity生命周期函数)
C#代码using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class LuaObjMgr : SingletonAutoMono<LuaObjMgr>{ public UnityAction start; public UnityAction update; public UnityAction原创 2021-06-24 18:21:13 · 510 阅读 · 0 评论 -
Lua调用C#语言九(nil和null的比较)
Lua代码:print("*****************Lua调用C# nil和null相关知识点******************");--往场景对象中添加一个脚本,如果存在就不加 如果不存在就加GameObject=CS.UnityEngine.GameObject;Rigidbody=CS.UnityEngine.Rigidbody;local obj = GameObject("测试添加脚本");local rig = obj:GetComponent(typeof(Rigidb原创 2021-06-24 16:56:46 · 1409 阅读 · 1 评论 -
Lua调用C#语言八(二维数组)
print("*****************Lua调用C# 二维数组相关知识点******************");local obj = CS.Lesson8();print("行数:"..obj.array:GetLength(0));print("列数:"..obj.array:GetLength(1));--获取数组中的元素--lua中不支持[0,0]或者[0][0]--使用方法 getValue的方法print(obj.array:GetValue(0,0));prin原创 2021-06-24 13:41:39 · 302 阅读 · 0 评论 -
Lua调用七C#语言(委托和事件)
Lua代码print("*****************Lua调用C# 委托相关知识点******************");local obj = CS.Lesson7();--委托是用来装函数的--使用C#中的委托 就是用来装lua的函数 local fun = function() -- body print("Lua中的委托函数");end--lua中没有复合运算符 不能+=--如果第一次往函数中加函数,因为是nil 不能直接+--所有第一次要先=print("原创 2021-06-23 18:36:09 · 535 阅读 · 0 评论 -
Lua调用C#语言六(函数重载)
Lua语言print("*****************Lua调用C# 函数相关知识点******************");local obj = CS.Lesson6();--虽然lua自己不支持写重载函数--但是lua支持调用C#中的重载函数print(obj:Calc());print(obj:Calc(1,15));--lua虽然支持调用C#重载函数--但是lua中的数值类型 只有Number--对C#中多精度的重载函数支持不好 傻傻分不清--在使用时,可能会出现意原创 2021-06-23 17:54:40 · 199 阅读 · 0 评论 -
Lua调用C#语言五(ref、out)
Lua代码print("*****************Lua调用C# ref相关知识点******************");Lesson5=CS.Lesson5;local obj = Lesson5();--ref参数 会以多返回值的形式返回给lua--如果函数存在返回值 那么第一个值就是该返回值--之后的返回值 就是ref的结果 从左到右一一对应--ref参数 相当于传入一个默认值 占位置(ref 不能省略,可以用0占位置)--a相当于返回值--b 第一个ref--c 第原创 2021-06-23 17:21:42 · 298 阅读 · 0 评论 -
Lua调用C#语言四(扩展方法)
lua代码print("*****************Lua调用C#扩展相关知识点******************");Lesson4=CS.Lesson4;--使用静态方法Lesson4.Eat();--成员方法 实例化出来用local obj = Lesson4();obj:Speak("学习扩展方法");--使用扩展方法 和成员方法一致--调用C#中某个类的扩展方法,那一定要在扩展方法所在的静态类前加上LuaCallCSharp特性--想要在Lua中使用扩展方法,原创 2021-06-22 18:18:29 · 251 阅读 · 0 评论 -
Lua调用C#语言三(数组、List、字典)
print("*****************Lua调用C#数组******************");local Lesson3=CS.Lesson3();--Lua使用C#数组相关知识--长度 userdata--C#怎么用 lua就怎么用print(Lesson3.testArray.Length);--访问元素print(Lesson3.testArray[0]);--遍历要注意 虽然lua中索引从1开始--但是数组是C#那不得规则 所以 还是要按照C#来--注原创 2021-06-22 17:47:41 · 1213 阅读 · 0 评论 -
Lua调用C#语言二(枚举)
Lua代码print("*****************Lua调用C#枚举相关知识点******************");--枚举调用--相当于Unity当中的枚举--枚举的调用规则和类的调用规则是一样的--CS.命令空间.枚举名.枚举成员--也支持取别名PrimitiveType=CS.UnityEngine.PrimitiveType;GameObject=CS.UnityEngine.GameObject;local obj = GameObject.CreatePrim原创 2021-06-21 17:15:43 · 329 阅读 · 0 评论 -
Lua调用C#语言一(类)
print("************逻辑与 逻辑或*****************")--与 遇假则假 或 遇真贼真--and or--lua中 只有nil和false时为假 其实为真print(1 and 2);print(nil and 2);print(3 and nil);print(1 or 2);print(nil or 2);print(nil or false);print(false or nil);--伪三目运算符a=2;b=1原创 2021-06-21 09:56:55 · 300 阅读 · 0 评论