zoukankan      html  css  js  c++  java
  • Unity3D-RPG项目实战(4):角色性能測试

    前言

    用一个新的引擎。还是要沉下心来学习。记得2007年用Unreal Engine 3做项目的时候。就有过慘痛的教训:前面话了个把月的时间学习Unreal。认为摸门了。于是就着急忙慌的进入项目正式开发了,但是又干了几个月才发现。最初对引擎的非常多理解是错误的。这次决定用Unity3D做项目之后,我想还是要慎重一些。先写一些或许用得着的小程序玩玩。通过实践,验证一下对引擎的理解。

    首先就是对移动平台的性能不摸底,这对于定义什么样的美术技术规格非常关键。

    所以尝试写了一个简单的角色渲染測试的小程序。完整项目资源和源码在这里:https://github.com/neil3d/LearnUnity/tree/master/ArtTest_Char。眼下我使用的版本号是Unity 5 Beta1。请各路高手斧正。



    笔记


    程序计划实现的功能

    • 在屏幕上显示一个角色。实现随机的站立、行走;
    • 点击屏幕,能够在地面上放置一个角色;
    • 拖动屏幕能够移动摄像机;
    • 显示当前的帧速率和生成的角色个数;

    场景编辑与资源导入

    • 创建一个空的GameObject,命名为Globals。用来保存全部的全局对象。主要是那些管理器类。
    • 给Globals创建一个Debugger子对象。把測试信息显示的脚本挂载到上面;用一个单独的对象,是方便开启/关闭全部Debug相关的功能。
    • 创建一个空的GameObject,命名为Characters。将来动态生成的对象。都设为它的子对象。

      注意要把它的Transform的Position置为0。

    • 创建一个Plane,并赋予一张贴图。做我们的地面。命名我Ground。
    角色动画我这里使用了Legacy模式,感觉这样的方式挺直观、简便的。

    注意导入骨骼动画模型和全部动作时,Rig选项都要选成Legacy。

    资源导入好之后,创建一个名为char的Prefab,把骨骼动画模型(包括Animation设置)加入进去。并加入CharacterController脚本组件。

    要把char.prefab放入到Resources目录中,以方便使用Resources.Load()方法来动态创建。

    代码逻辑

    先上一个图,说明一下这个简单的程序结构。


    • ApplicationMgr类:主要负责对全局对象、Application的一些设置的管理;
    • InputManager:在这里处理全部的操作,包含移动摄像和点击放置角色(调用CharacterMgr的SpawnCharacter函数);
    • CharacterMgr:负责在程序启动时载入资源。主要是char.perfab。实现生产角色的接口,并管理角色计数器。
    • CharacterCtroller:控制单个角色;实现闲逛行为模式;

    測试数据

    • 測试所使用的角色:三角面数:2552,骨骼数:43,贴图:512*512一张;
    • 在我的小米3上。角色加入到30个左右,帧速率就明显下降。
    • 结论:这个模型的规格过高。要考虑缩减面数/骨骼数。或者使用LOD等其它优化技术;
  • 相关阅读:
    ubuntu linux切换用户到root
    passwd命令
    如何根据驱动程序及其安装文件来访问该设备[转]
    CMMI的5个级别和25个过程域
    Linux操作系统启动过程
    VMWare上网三种工作模式
    卷积的意义【转】
    Linux内核模块动态添加方法
    Linux内核编译的过程
    mysql存入中文乱码解决方法(windows环境)
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7387757.html
Copyright © 2011-2022 走看看