zoukankan      html  css  js  c++  java
  • Unity SLua 如何调用Unity中C#方法

    1.原理

    就是通常在Lua框架中所说的,开放一个C#的web接口,或者叫做在Slua框架中注册函数。

    2.作用

    在Lua中调用C#中的方法,这个是在做热更新中很常用的一种方法,无论是slua,还是lua,都差不多、这里,我拿slua举例。

    3.实际运用 举例:如何在Slua中打印Log

    原理:其实是slua通过调用C#中的Debug.Log方法实现的打印,并不是说是lua中的打印方法起到作用。

    步骤:

    首先,既然是Lua调用C#中的方法,这里自定义写一个打印log的方法。

    public class CDebug {
    
        /// <summary>
        /// lua中打印Log
        /// </summary>
        /// <param name="title">标题</param>
        /// <param name="contents">内容</param>
        public static void Log(string title,string contents)
        {
            int level = 3;
            //这里代码不需要解释把,如果对颜色有需求,可以自己稍微修改一下。
            switch(level)
            {
                case 1:
                    Debug.Log(contents);
                    break;
                case 2:
                    Debug.LogWarning(title+":"+ contents);
                    break;
                case 3:
                    Debug.LogError(title + ":" + contents);
                    break;
                default:
                    Debug.Log(contents);
                    break;
            }
        }
    }
    

      I:

    注意图中 标红。一般每个lua框架中,都会有这么个注册函数,加了这个注册函数。才会,有下面那步。执行。

    II:

    点击 Slua->Custom->Make

    之后,发现编译之后,多一个:

    III:

    注意:之后我们可以看到多了一个脚本,用svn版本控制,对比一下文件,其实还是有其他地方改动的。

    会发现BindCustom文件中的代码变成了

    public class BindCustom {
    		public static Action<IntPtr>[] GetBindList() {
    			Action<IntPtr>[] list= {
    
                     Lua_CDebug.reg, //这是自动生成的,多附加的
    // 因为之前我们看到CustomExport脚本中的OnAddCustomClass方法中
    //很多方法是被注释了,所以,需要手动把之前生成过的文件加上,具体看
    //SVN版本控制对比一下BundCustom脚本,需要把之前生成过的代码
    //手动加上。
    //附加:这个不是什么BUG,因为别人以为所有需要在Lua中调用C#的代码都附加好了,
    //所以,不需要了,假如我们的项目需要上线,也需要还原Log方法,因为他会打包到
    //apk包中的.
    

      

    这样一个调用C#中的方法的功能做完了,其他的类似的,仿照这个例子就可以。

  • 相关阅读:
    Cipherlab CPT9300手持扫描枪开发体验 [转]
    引用(ajaxfileupload.js) ajaxfileupload.js报jQuery.handleError is not a function错误解决方法
    C#锐利体验2.0:泛型编程
    Visual C#中调用Windows服务初探
    C#操作XML代码整理
    个人代码库のC#背景色渐变的功能
    ~~ C#数字时钟 ~~
    DevExpress随笔10.1.5的汉化与破解
    用C#获取局域网内所有机器
    C# 图片格式(JPG,BMP,PNG,GIF)等转换为ICO图标
  • 原文地址:https://www.cnblogs.com/u3ddjw/p/6824794.html
Copyright © 2011-2022 走看看