前言

用一个新的引擎。还是要沉下心来学习。记得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等其它优化技术;

Unity3D-RPG项目实战(4):角色性能測试的更多相关文章

  1. 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式

    PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...

  2. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  3. Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

    导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...

  4. mongodb3.0 性能測试报告 一

    mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 ...

  5. Window平台搭建Redis分布式缓存集群 (一)server搭建及性能測试

    百度定义:Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对很多其它.包含string(字符串).list(链表).set(集合).zset(sort ...

  6. mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY'

    mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysql ...

  7. LR杂记 - 性能測试指标及经常使用的监控工具

    监控指标 性能測试通常须要监控的指标包含: 1.serverLinux(包含CPU.Memory.Load.I/O). 2.数据库:1.Mysql 2.Oracle(缓存命中.索引.单条SQL性能.数 ...

  8. PHP归档phar性能測试

    PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java™ 技术的 JAR 归档,它同意使用单个文件打包应用程序.这个文件里包括运行应用程序所需的全部东西.该文件不同于单个可运行文件,后 ...

  9. Redis源代码分析(十三)--- redis-benchmark性能測试

    今天讲的这个是用来给redis数据库做性能測试的,说到性能測试,感觉这必定是高大上的操作了.redis性能測试.測的究竟是哪方面的性能,怎样測试,通过什么指标反映此次測试的性能好坏呢.以下我通过源代码 ...

随机推荐

  1. 【struts2】action中使用通配符

    在以前的学习中,<action>元素的配置,都是用明确的配置,其name.class等属性都是一个明确的值.其实Struts2还支持class属性和method属性使用来自name属性的通 ...

  2. 如何调试bash脚本

    Bash 是Linux操作系统的默认Shell脚本.Shell是用来处理操作系统和用户交互的一个程序.Shell的脚本可以帮助用户自动化地和操作系统进行交互.你也可以理解为一种脚本式的编程.即然有编程 ...

  3. python中数组与多维数组用法介绍

    增加时a.append( 'a ')就可以了.只要按顺序加,就没有问题 . 使用时,完全可以使用下标: 代码如下 复制代码 a[0] a[1] 但出果引用不存在的下标,则会引发异常.这时,你需要先添加 ...

  4. Java8 List字符串 去重

    http://blog.csdn.net/jiaobuchong/article/details/54412094 public List<String> removeStringList ...

  5. Linux内核设计基础(一)之中断处理

    假设让内核定期对设备进行轮询.以便处理设备,那会做非常多无用功,假设能让设备在须要内核时主动通知内核,会是一个聪明的方式,这便是中断. 在响应一个特定中断时,内核会运行一个函数--中断处理程序. 中断 ...

  6. jsp页面中的EL表达式不被解析的问题

    原因:问题在web.xml配置文件上,web.xml声明部分一般分为如下版本的xsd, web-app_2_2.xsd web-app_2_3.xsd web-app_2_4.xsd web-app_ ...

  7. Android Eclipse Libs 的 jar 源码查看 (或者新版本ADT无法查看jar的源码)

    问题背景:在使用比较新的ADT的时候,无法导入Jar中的源码包查看源码.只好自己打开压缩包,实在恼火.在半年前,只好这样. 问题解决方案:我就以 " android-support-v4.j ...

  8. 制做rpm包工具fpm安装

    安装ruby模块 [root@c01 ~]# yum install ruby rubygems ruby-devel -y # 查看当前使用的rubygems仓库 [root@c01 ~]# gem ...

  9. git mergetool 解决冲突的问题

    git mergetool http://blog.csdn.net/u012150179/article/details/14047183

  10. CCardSlip

    该类已经把tableview封装好,可以把它当做一个精灵来用,这样做的好处是,当一个界面同时需要多个tableview的时候就可以很好的解决这个问题,而且模块也更清晰. //------------- ...