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#中的方法的功能做完了,其他的类似的,仿照这个例子就可以。
Unity SLua 如何调用Unity中C#方法的更多相关文章
- 使用RPC 调用NameNode中的方法
用户在Client 端是很难对 NameNode中的信息进行直接访问的, 所以 ,在Hadoop系统中为 Client端 提供了一系列的方法调用,这些方法调用是通过RPC 方法来实现的, 根据RPC ...
- smarty 截取字符串,调用php中的方法,foreach循环
1.smarty截取字符串 html中的代码 <{$content|truncate:30:"..."}> ...
- vue 在methods中调用mounted中的方法?
首先可以在data中先声明一个变量 比如 isShow=' ' mounted 中 ---> methods 中 ---> this.sureDelBox(item) 直接this调用 ...
- 在Android Studio中调用so中的方法
本节用的so是上节用Android Studio创建的so.想在Android Studio中调用so中的方法,需要先引用so.Android Studio中引用so的方法有二种,下面开始介绍. 一 ...
- thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)
thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...
- 【学习】调用iframe中的方法
当页面中有iframe时,想在主页面调用iframe中的方法,可以用contentWindow属性.但具体用时还有一点要注意,就是必须等页面加载完成才可以,否则会报错找不到函数. 例: 父页面: &l ...
- 使用AIDL远程调用服务中的方法
AIDL:android interface define language(接口定义语言) 作用:方便远程调用其他服务中的方法 注意:安卓四大组件都要在清单文件注册 aidl创建图: AIDL的全称 ...
- 纯静态界面中(html)中通过js调用dll中的方法从数据库中读取数据
最近接到一个离职员工的任务,一个搭好框架的ERP系统,看了两天,说一下看到的东西,整个项目目录中我没发现一个.aspx后缀的文件,全是静态HTML文件,之后发现他用的jquery简直看的头疼,不过大概 ...
- Unity调用安卓中的方法遇到的问题
最近在用U3D做一个简单的迷宫游戏,在项目中利用Unity制作游戏场景,在android中调用游戏场景,并在游戏结束后调用安卓方法,传递参数,退出游戏场景 查找网上资料,基本上Unity调用安卓的写法 ...
随机推荐
- 面试 -- ListView对其指定的子Item进行单独的刷新
1,最近在面试题目的时候突然看到了问题"ListView对其指定的子Item进行单独的刷新",当时感觉一脸懵逼,还是第一次听到这个问题,也就是不能使用adapter.notifyD ...
- Docker(开课吧笔记)
1.Docker基本概念 Docker运行在Linux,需要git技能 docker官网解析 来源于容器又不仅仅是容器,第一个版本基于LXC,远远超过容器概念 交付时拿到的是镜像,直接run运 ...
- lsusb命令
运行 yum install libusb usbutils
- ECMASCRIPT5新特性(转载)
Function 1: Object.create 这是一个很重要的改动,现在我们终于可以得到一个原型链干净的对象了.以前要创建一个类 function Cat(name) { this.name ...
- python3的urllib2报错问题解决方法
python urlib2 兼容问题 在python3中,将urllib和urllib2合并了,所以在使用urllib2的地方改成urllib.request即可.示例如下 import urllib ...
- 如何用 JavaScript 下载文件
简介 我们知道,下载文件是一个非常常见的需求,但由于浏览器的安全策略的限制,我们通常只能通过一个额外的页面,访问某个文件的 url 来实现下载功能,但是这种用户体验非常不好. 幸好,HTML 5 里面 ...
- 使用idea2017搭建SSM框架
搭建个SSM框架居然花费了我好长时间!特此记录! 需要准备的环境: idea 2017.1 jdk1.8 Maven 3.3.9 请提前将idea与Maven.jdk配置好,本次项目用的都是比较新的 ...
- GitHub 添加 SSH keys
首先在本地创建 SSH Keys $ ssh-keygen -t rsa -C "18817801185@163.com" 后面的邮箱即为 github 注册邮箱,之后会要求确认路 ...
- vuejs2.0子组件改变父组件的数据
在vue2.0之后的版本中,不允许子组件直接改变父组件的数据,在1.0的版本中可以这样操作的,但是往往项目需求需要改变父组件的数据,2.0也是可一个,区别是,当我们把父元素的数据给子组件时,需要传一个 ...
- 【C++】指针与引用的区别
本文主要总结在C++中指针与引用的区别. 从定义与性质来看指针与引用有如下区别: 指针表示的是一块变量的地址 引用表示一个变量的别名. 因此指针变量需要占用空间(一个指针变量在32位系统下占用4字节, ...