相同的 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 坑的总结的更多相关文章

  1. 【转】Unity3D开发之Http协议网络通信

    之前unity3d项目要做跟服务器通信的模块,然后服务器那边的协议是基于http的Jsonrpc通信方式一开始,用C#的本身类HttpWebRequest来提交请求,很快就在电脑上面成功了,代码也很简 ...

  2. Unity3D开发之Mac OS 开发环境搭建 笔记

    http://www.cnblogs.com/zhaoqingqing/p/3383167.html 首先上几张图: 摸索了一上午,才搞定在模拟器中运行.至于在Iphone真机中运行,虽然有开发者证书 ...

  3. Unity3D 开发之shader教程(浅谈光照之漫反射diffuse)

    在游戏开发过程中,光照应该是必不可少部分,当然,这是指大多数的稍微大型一些的3D游戏会需要,给模型或者山山水水加上光照,会看上去更加的真实,获得更好的体验.一个本身不发光物体显示什么颜色,在于本身反射 ...

  4. Unity3D开发之NGUI点击事件穿透响应处理

    http://www.xuebuyuan.com/1936292.html 在使用NGUI 开发2D项目的时候,发现了一个问题,就是如果点出一个菜单,然后点击菜单上面的按钮的时候就会使得按钮下面的物品 ...

  5. Unity3D开发之“获取IOS设备所在的国家代码"

    原地址:http://dong2008hong.blog.163.com/blog/static/469688272014021025578/ 在前一段时间游戏开发中需要实现获取IOS设备所在的国家代 ...

  6. Unity3D开发之NGUI结合粒子系统的遮挡问题

    原地址:http://blog.csdn.net/lihandsome/article/details/22194025 我的是NGUI3.0.3版本,在加入粒子系统的时候发现一直都是在精灵的下面,所 ...

  7. Unity3D开发之3D按钮的声音播放

    这里我们首先就简易的制作一个非常简单的3D按钮![ 图中就一个cube 加个3DText,然后我们就编写代码 [RequireComponent(typeof(CompoundButton))]//特 ...

  8. Unity3D开发之Matrix4x4矩阵变换

    在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置.旋转和缩放.但是很多人都不太理解这儿Matrix4x4变换矩阵.通过DX中的变换矩阵我来讲一讲在unity中这个变换矩阵是怎么 ...

  9. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

随机推荐

  1. 【C#】HTTP请求GET,POST(远程证书失效)

    HTTP定义了与服务器交互的不同方法,基本方法有GET,POST,PUT,DELETE,分别对于查,该,增,删.一般情况下我们只用到GET和POST,其他两种都也可以用GET和POST来实现,很多浏览 ...

  2. 【裸最小生成树】 模板 poj 1258

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #def ...

  3. Smoke Testing(冒烟测试)

    Smoke Testing 的概念最早源于制造业,用于测试管道.测试时,用鼓风机往管道里灌烟,看管壁外面是否有烟冒出来,以便检验管道是否有缝隙.这一测试显然比较初级,更深层一点的测试至少要进行渗油测试 ...

  4. Swift の 函数式编程

    Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持. Swift 提供了更多的语法糖和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论. S ...

  5. Android抽屉(SlidingDrawer --类似android通知栏下拉效果)

    Android抽屉(SlidingDrawer)的实现发 - 红黑联盟http://www.2cto.com/kf/201301/182507.html 可动态布局的Android抽屉之基础http: ...

  6. JavaScript(1)——变量、函数声明及作用域

    这是我的第一篇博客文章,本人不才,文笔也不好,所以可能写的有点凌乱.有什么不对的地方还望见谅.不过每天进步一小步,总有一天会迈出那一大步.以下内容是我对变量.函数声明及函数表达式.作用域的理解. [变 ...

  7. 命令行调试smali

    am start -D -n com.agilebits.onepassword/.activity.LoginActivity ps | grep passu0_a126 1107 217 5107 ...

  8. unity LineRenderer

    using UnityEngine; using System.Collections; public class Spider:MonoBehaviour { private LineRendere ...

  9. 篇一:eclipse创建maven工程

    一.概览 maven创建的项目主要分为三类:war(网页工程).jar(Java工程).pom(父工程); war:网页工程,包含webapp,用于view层 jar:Java工程,用于提供方法.se ...

  10. python插入mysql新值

    #Server Connection to MySQL: import MySQLdb conn = MySQLdb.connect(host= "localhost", user ...