android游戏开发中,我一般是使用surfaceview,然后绘图部分我开一个线程,游戏逻辑部分又单开一个线程,可有人说这样不好,最好放在一个线程中进行
坛友们的观点呢?

解决方案 »

  1.   


    首先要确定2点,
    1:绘制ui必须在主线程,也就是ui线程。
    2:android里面,线程之间靠的消息来通信的(系统本身的消息机制)。楼上说的那个死锁的问题不存在,android在这点上,依靠的是thread的一个event looper(类似windows 上的looper,因为都是事件驱动的,每个线程都可以维护一个消息队列,UI线程本身就有一个消息队列)的概念。比如UI线程,线程1,线程2,总共三个线程。你线程1做完操作,会给UI线程发送一个消息,其实就是在UI线程的消息队列中加入一个事件,然后UI线程会调度执行这个事件,及时线程2这个时候完成,给UI线程发送消息,但是UI线程也只会在执行完当前操作之后,才有可能去调度执行消息队列中的事件。大概就是这个意思吧。
      

  2.   

    都用JAVA做游戏了,这一点点的资源没有什么了吧。
      

  3.   

    三楼的你行不行,干扰csdn的秩序!!假广告还往这里放!鄙视!
      

  4.   

    放在一个线程里?那么只能都放在UI线程里吧,如果逻辑部分阻塞了,那么UI也阻塞,画面假死.
    逻辑部分当然还是另开一个线程比较好.1楼所说的死锁,逻辑线程和UI线程各自负责不同的模块,并不争抢资源,哪来的死锁问题.
      

  5.   

    你要考虑实时性,事件驱动是有等待时间的,这样会导致同步的问题.给user感觉不好.可以写个程序比较一下.
      

  6.   

    android游戏开发中,我一般是使用surfaceview,然后绘图部分我开一个线程,游戏逻辑部分又单开一个线程,可有人说这样不好,最好放在一个线程中进行
    坛友们的观点呢?
      

  7.   

    这要取决于你得程序业务是否复杂,是否会影响到绘图延时,因为绘图在gpu,逻辑在cpu,多线程,能让gpu和cpu分工,但是会使两者配合复杂,和逻辑协作复杂,手机普通应用还是不用了,除非3d游戏差不多
      

  8.   

    放在两个线程中
    cpu自动平衡调度
    你去问写过大game主逻辑循环的人
    他明白这个道理
      

  9.   

    玩过几个2.5D网络游戏,最不喜欢的是,按群攻技能,用鼠标点地图,当服务器人比较多或者有些机子显卡和CPU配置不高时,就会技能特效或者点到地图某个不好判断的点引起画面卡死,结果等了几秒以后,人物已经被怪挂了,但CS1.6是平台游戏,也算是3D了吧,却从来没有卡过,也许是因为一个服务器上限只有32个人,延迟一般就5-30ms,地图是使用向量方式而不是美工直接绘制,所以即没有出现网络的卡机,也没出现位置卡机,也没出现绘图卡机的问题,也许可以借鉴一下其它游戏的写法