Unity3d 开发之 ulua 坑的总结
相同的 lua 代码在安卓上能正常运行,但在 IOS 上可能不会正常运行而导致报红,崩溃等,我在使用 lua 编程时遇到的一些坑总结如下:
1. File.ReadAllText, 诸如以下代码在 ios 上会崩:
local path="C:/1.txt";
local file=luanet.import_type("System.IO.File");
local text=file.ReadAllText(path);
正确写法如下:
local path="C:/1.txt";
local file=luanet.import_type("System.IO.File");
local encoding=luanet.import_type("System.Text.Encoding");
local text=file.ReadAllText(path,encoding.UTF8);
需指定编码格式。
2. DateTime.AddMinutes 在 ios 会找不到 AddMinutes 方法,但 AddSeconds 方法是可以的。
local DateTime = luanet.import_type("System.DateTime");
local startTime=DateTime.Parse("...");
--local endTime=startTime:AddMinutes(1); -- 在 ios 上报红:找不到 AddMinutes 方法
local endTime=startTime:AddSeconds();
3. 在 ios 64位 release 版本上,使用 Color 会导致崩溃。
local uiLabel=this.transform:Find("Label"):GetComponent("UILabel");
uiLabel.color=Color.red; -- 其中,Color是ulua提供的类,此行代码将导致崩溃
4. 诸如以下代码在 ios 64 位 release 版本上会 crash,其中 c# 代码为:
public class LoadCardHandler
{
public GameObject Load(string name, Transform parent, int depth = , string defaultName = null)
{
...
}
}
然后 LoadCardHandler 类通过 wraps 的方式映射到 lua 中,在 lua 中使用如下:
local loader=LoadCardHandler.New();
loader:Load(m_activityItemConfig.ad_pic,m_advertisementParent,,""); -- 这行代码将导致崩溃。
5. 诸如以下代码会在 ios 上报红:
local button=rootTrans:GetComponent("UIButton");
button.onClick:Clear(); -- 在ios上此方法会报错
6. 以下代码会导致 ios 上闪退:
LuaUtils.ShowLoadSystemAnim("LoadAndClose", DelegateFactory.Action(Conceal));
7. c#的长整型传到lua代码中时会有一点误差,所以最好是把在c#里把长整形转成字符串再传到lua里。
8. 以下方法通过 wrap 的方式映射到 lua 中,在 lua 中调用。在用 xcode6.4 打包的 release 版本,在 64 位手机上运行此方法时将导致未响应。
其中c#的代码为:
public static string[] StringSplit(string src, params string[] separator)
{
return src.Split(separator, StringSplitOptions.RemoveEmptyEntries);
}
lua代码为:
local lines=LuaHelper.StringSplit(text,"\n"); -- 此行代码: ios xcode6.4 出的包,在64位手机上导致未响应。
转载请注明出处:http://www.cnblogs.com/jietian331/p/4971120.html
Unity3d 开发之 ulua 坑的总结的更多相关文章
- 【转】Unity3D开发之Http协议网络通信
之前unity3d项目要做跟服务器通信的模块,然后服务器那边的协议是基于http的Jsonrpc通信方式一开始,用C#的本身类HttpWebRequest来提交请求,很快就在电脑上面成功了,代码也很简 ...
- Unity3D开发之Mac OS 开发环境搭建 笔记
http://www.cnblogs.com/zhaoqingqing/p/3383167.html 首先上几张图: 摸索了一上午,才搞定在模拟器中运行.至于在Iphone真机中运行,虽然有开发者证书 ...
- Unity3D 开发之shader教程(浅谈光照之漫反射diffuse)
在游戏开发过程中,光照应该是必不可少部分,当然,这是指大多数的稍微大型一些的3D游戏会需要,给模型或者山山水水加上光照,会看上去更加的真实,获得更好的体验.一个本身不发光物体显示什么颜色,在于本身反射 ...
- Unity3D开发之NGUI点击事件穿透响应处理
http://www.xuebuyuan.com/1936292.html 在使用NGUI 开发2D项目的时候,发现了一个问题,就是如果点出一个菜单,然后点击菜单上面的按钮的时候就会使得按钮下面的物品 ...
- Unity3D开发之“获取IOS设备所在的国家代码"
原地址:http://dong2008hong.blog.163.com/blog/static/469688272014021025578/ 在前一段时间游戏开发中需要实现获取IOS设备所在的国家代 ...
- Unity3D开发之NGUI结合粒子系统的遮挡问题
原地址:http://blog.csdn.net/lihandsome/article/details/22194025 我的是NGUI3.0.3版本,在加入粒子系统的时候发现一直都是在精灵的下面,所 ...
- Unity3D开发之3D按钮的声音播放
这里我们首先就简易的制作一个非常简单的3D按钮![ 图中就一个cube 加个3DText,然后我们就编写代码 [RequireComponent(typeof(CompoundButton))]//特 ...
- Unity3D开发之Matrix4x4矩阵变换
在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置.旋转和缩放.但是很多人都不太理解这儿Matrix4x4变换矩阵.通过DX中的变换矩阵我来讲一讲在unity中这个变换矩阵是怎么 ...
- [整理]Unity3D游戏开发之Lua
原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...
随机推荐
- zf-关于更换页面,的各种问题。
问题1:找不到common 这个变量(集合)与layer这个js文件. 这里的common 就是一个方法集合,声明var common; common.abc = function(参数1,参数2, ...
- vs2010在进行数据架构比较时报'text lines should not be null'错误
通过VS2010进行服务器数据库和本地数据库比较架构(都是sql server 2008 R2)时,弹出“text lines should be not null”错误,如下图: 解决方法:在Vis ...
- 函数求值一<找规律>
函数求值 题意: 定义函数g(n)为n最大的奇数因子.求f(n)=g(1)+g(2)+g(3)+-+g(n).1<=n<=10^8; 思路: 首先明白暴力没法过.问题是如何求解,二分.知道 ...
- Python -- lambda, map, filter
lambda f = lambda x : x * 2 f(5) f = lambda x,y,z : x+y+z f(2,1,3) map list(map(lambda x:x[0].upper( ...
- 使用libvirt做适配的kvm虚拟机window server 2008 磁盘性能的提升
实验室自己做了一个iaas的项目,当时是为了更方面的在kvm和xen下进行迁移,所以选择了libvirt作为适配层. 昨天简单的测试一了一下我们跟qingcloud的性能对比.我们的linux主机性能 ...
- ImageLoader的使用
显示本地图片 //ImageLoader使用前必须初始化 ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.init(I ...
- Struts2 语法--异常处理
1. UsersDAO.java里产生一个例外: System.out.println(1/0); 2. 调用DAO的UsersAction1.java 的execute方法, 加抛异常: publi ...
- iOSFMDB和CoreData
转发:http://wenku.baidu.com/link?url=LSPSZSPxN4pVwWNwqEXSoY0-jlnXq-_14C7qV1FV9_gFIMPjdKlXrG4Nrh_08EZS1 ...
- VC6.0 调试.dll文件
对于自己制作的.DLL文件,一直没有比较好的调试方法,其实是知道的太少. 下面就说说VC6.0下面 怎么调试DLL文件: 首先得有一个调用DLL文件的可执行程序,然后调用这个可执行程序. 在工程上 右 ...
- Android--paint应用举例
android 用paint,canvas 绘图 (1)主要用了paint ,canvas 两个类中的方法 (2)主要用了画线和画圆的方法. (3)drawline(起始点轴坐标,起始点y轴坐标,终点 ...