【XLua】019-Lua访问C#:重载方法调用


重载方法调用

  • 1、Lua脚本
local DrivenClass = CS.DrivenClass
local testobj = DrivenClass()

--重载方法调用
 testobj:TestFunc(100)
 testobj:TestFunc('hello')

  • 2、C#脚本
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;

[LuaCallCSharp]
public class BaseClass
{
    
}

public struct Param1//结构体参数
{
    public int x;
    public string y;
}

[LuaCallCSharp]
public class DrivenClass : BaseClass
{
   //重载方法
    public void TestFunc(int i)
    {
        Debug.Log("TestFunc(int i):参数为int类型");
    }

    public void TestFunc(string i)
    {
        Debug.Log("TestFunc(string i):参数为string类型");
    }
}


public class _005_LuaCallCSharp : MonoBehaviour
 {

    private LuaEnv env;
    
    void Start ()
    {
        env = new LuaEnv();
        env.DoString("require 'LuaCallCSharp'");
    }
    

    private void Update()
    {
        if(env!=null)
        {
            env.Tick();
        }
    }

    private void OnDestroy()
    {
        env.Dispose();
    }

}

运行结果:


img.jpg

注意:

1、直接通过不同的参数类型进行重载函数的访问,例如:
testobj:TestFunc(100)
testobj:TestFunc('hello')
将分别访问整数参数的TestFunc和字符串参数的TestFunc。

2、xlua只一定程度上支持重载函数的调用,因为lua的类型远远不如C#丰富,存在一对多的情况,比如C#的int,float,double都对应于lua的number,上面的例子中TestFunc如果有这些重载参数,第一行将无法区分开来,只能调用到其中一个(生成代码中排前面的那个)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,768评论 0 38
  • 将下列代码挂载到任何一个GameObject上,这样就能在Unity中加载并执行Resources/Lua文件夹下...
    BlauHimmel阅读 23,529评论 3 18
  • 虽然计算机可以做很多事情,但它不会思考,它需要接受系统化的指令来工作。大部分用户通过应用程序为计算机指派任务,软件...
    JunChow520阅读 11,978评论 0 4
  • 讲到朋友就会联想到兄弟!如今“朋友”已经成为社交圈中认识的人就是朋友。 浅显到 同学、 同事、 甚至刚刚结交的...
    嘿你的益达_d61a阅读 1,544评论 0 2
  • 我叫张娴雅曾经是一位小学老师,现在是全职太太。我有一个有份稳定工作的老公,我有一个正在上五年级的女儿。 周末当我把...
    微微一笑很倾墙阅读 3,945评论 0 2

友情链接更多精彩内容