unity3d多线程坑
单独起了一个线程来处理网络相关操作,比较常规的做法。本身没啥特别的东西,碰到了一个不大不小的坑折腾了好久,记录下来吧。
简单的说就是子线程中抛出的异常,如果没有catch的话,会导致子线程悄无声息的退出,而u3d主线程没有任何反馈,
只有等到业务逻辑出错的时候才发现哪里出毛病了。
解决方法就是可能抛异常的地方都给catch掉,但是代码很难看,或者直接子线程的主循环里面catch一下,然后输出日志。
但是这样也仅仅只是帮助查看分析出错而已,最终还是需要解决掉的,又牵扯到了另一个问题。
主线程中做这些,
void foo()
{
// send msg to server
// balabala1,同时子线程已经再工作了,那么主线程再这里就有可能收到服务器的反馈
// add server msg handler
// balabala2 , 但是msg handler这里才添加,那么就会导致子线程调用msg handler的时候抛异常或者出错。。。所以mg handler需要提前添加
}
unity3d多线程坑的更多相关文章
- WindowsPhone&Windows8.1&Windows8&Unity3d 填坑日记
近期的游戏开发大体上接近尾声,总结了不少关于Unity3d面向Windows几大平台开发时遇到的各种坑以及怎样填坑的经验.总的来说,Windows8.1 Windows8/RT以及WindowsPho ...
- Unity3d多线程
http://blog.csdn.net/dingkun520wy/article/details/49181645 (一)多线程的创建 Thread t = new Thread(new Threa ...
- Unity3D的坑系列:动态加载dll
我现在参与的项目是做MMO手游,目标平台是Android和iOS,iOS平台不能动态加载dll(什么原因找乔布斯去),可以直接忽略,而在Android平台是可以动态加载dll的,有了这个就可以实现代码 ...
- Unity3D的坑系列:你真想发布WinPhone版吗?
Unity 4.2加入了支持WinPhone发布,本来是一件令人开心的事情,不过最近听了Unity技术支持的一个事情后就发现,原来发布WinPhone版也是一个坑. 实际上如果你用Unity做小游戏发 ...
- xcode9 unity3d 新坑
1.metal调试会报错,要在edit scheme里关掉
- Unity3D的坑系列:打包Assetbundle丢失Shader问题(贴图显示不了)
从Unity4.2开始,为了减少首包大小,不会默认将所有Shader引擎加到游戏程序中,据Unity技术支持人员所说,Unity会将Shader引擎打包到Assetbundle资源中,但是我测试发现不 ...
- (转)Unity3d各种坑
1.unity的资源包一旦量很大的时候卸载不干净,你可以尝试反复切场景 ,内存诡异的 增加 一直到爆,assetsbundle.unload(true);有问题 你想要卸载你必须先让你加载过的资源为n ...
- Unity3D知识点
世界空间(World):整个虚拟世界的3d空间,在Unity3d中以米作为单位,如长100米宽100米高100米的立体空间. 屏幕空间(Screen):屏幕2d空间,大小就是屏幕的大小,以像素作为单位 ...
- 关于Unity3D手机网游开发一些小看法
它的知识技能和职责,我就不仔细说了,说细了有一点像招聘启示.他的主要职责虽然负责技术,但是也给产品决策和方向提供一些决策.他最主要的考核指标,就是经验很重要,最好主导或参与过一款网络游戏的开发.举个例 ...
随机推荐
- Linux下如何查看系统启动时间和运行时间
1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.002.查看/proc/uptime文件计算系 ...
- wcf用svcutil导出泛型的元数据
D:\aaa>svcutil net.tcp://192.168.1.110:44444/TradingsService.svc/mex /ct:System.Collections.Gener ...
- Java实现文件压缩与解压
Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例.(转载自http://www.puiedu. ...
- 基于Web2.0的RIA框架设计与实现
http://www.doc88.com/p-8866851533856.html http://cdmd.cnki.com.cn/Article/CDMD-10614-1012472890.htm
- OpenLDAP,一登录系统就修改密码
http://guodayong.blog.51cto.com/263451/d-2 郭大勇的博客 1:修改配置文件 在前面打开注释 moduleload ppolicy.la modulepat ...
- 使用 Eclipse 插件部署 Java 应用
打开 Eclipse,点击顶部的菜单『Help/Install New Software/Add』. 选择对话框顶部『Work with』 后面的『Add』按钮,并点击『Archive』选择下载到本地 ...
- java中的算术运算符、赋值运算符、比较运算符、逻辑运算符、条件运算符
一.算术运算符 算术运算符主要用于进行基本的算术运算,如加法.减法.乘法.除法等. Java 中常用的算术运算符: 其中,++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同滴 例 ...
- Form表单(回车)提交问题
我们有时候希望回车键敲在文本框(input element)里来提交表单(form),但有时候又不希望如此.比如搜索行为,希望输入完关键词之后直接按回车键立即提交表单,而有些复杂表单,可能要避免回车键 ...
- SQLserver聚集表、堆和索引
SQL Server 表使用下列两种方法之一来组织其分区中的数据页: 聚集表是有聚集索引的表.数据行基于聚集索引键按顺序存储.聚集索引按 B 树索引结构实现,B 树索引结构支持基于聚集索引键值对行进行 ...
- MySQL——保证数据的完整性
为了防止垃圾的产生,从而影响数据库的执行效率. 1实体完整性——行数据的有效性 唯一约束(unique).主键约束(primary key) 2域完整性——列数据的有效性 非空约束(not nul ...