前言

用一个新的引擎。还是要沉下心来学习。记得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. symbolicatecrash App Bug 分析工具

    1.symbolicatecrash 简介 symbolicatecrash 是一个 Xcode 自带解析 iOS Crash 文件的工具. 其它下载地址 symbolicatecrash,密码:6p ...

  2. 开关电源9v,1A

  3. 关于 f 散度

    在概率统计中,f散度是一个函数,这个函数用来衡量两个概率密度p和q的区别,也就是衡量这两个分布多么的相同或者不同. 1.f散度的定义p和q是同一个空间中的两个概率密度函数,它们之间的f散度可以用如下方 ...

  4. [转]Tomcat中的Session小结

    阅读目录 什么是Session Session的目的 实现机制 Tomcat中的session实现 session存在的问题 什么是Session 对Tomcat而言,Session是一块在服务器开辟 ...

  5. 关于jquery 取值,赋值常用控件的问题

    一.文本框 对于单个文本框: 1.获取文本框: $("#id").val() 2.赋值: $("#id").val("赋值"); 或 (清空 ...

  6. JS两日期相减

    JS两日期相减,主要用到下面两个方法 dateObject.setFullYear(year,month,day) 方法 stringObject.split(separator) 方法 functi ...

  7. 《Java Concurrency》读书笔记,构建线程安全应用程序

    1. 什么是线程安全性 调用一个函数(假设该函数是正确的)操作某对象常常会使该对象暂时陷入不可用的状态(通常称为不稳定状态),等到操作完全结束,该对象才会重新回到完全可用的状态.如果其他线程企图访问一 ...

  8. 修改 Semantic UI 中对 Google 字体的引用

    在第一次尝试 Semantic UI 后,发现其 css 中第一行,就引用了 fonts.googleapis.com 中的字体. 不知道为什么要这么做,也许在国外,google 的服务已经是一种互联 ...

  9. Atitti 过程导向 vs 结果导向 attlax的策

    Atitti 过程导向 vs 结果导向 attilax的策略 1. 结果导向的问题 以结果为导向”的明显弊端2 1.1. 白猫黑猫的策略是错误的2 1.2. 为了目的不择手段,完全违背了程序正义原则2 ...

  10. (UML总结三)UML与软件project

    学习完UML.我们要把它和之前的软件project结合起来.软件project是从总体的角度说了软件开发的步骤.保证了所开发软件的质量.而UML作为一种统一建模语言.是用来设计软件蓝图的可视化建模语言 ...