unity基础开发----切换场景、游戏视图(Game View)、iphone优化

转载 2013年12月03日 16:21:41

这个函数按照索引加载关卡。在Unity中使用File->Build Settings.....菜单可以看到所有 关卡的索引列表。在你能过加载关卡之前你必须将它添加到游戏使用关卡列表中。在 Unity中使用File->Build Settings.....并添加你需要的关卡到关卡列表中。

//加载索引为 的关卡

Application.LoadLevel (0);

当加载新的关卡时,所有已经加载的游戏物体都将被销毁。 如果你想让物体在被加 载新关卡时不被销毁,使用Object.DontDestroyOnLoad 

• static function LoadLevel (name : string) : void

http://game.ceeger.com/Script/Application/Application.LoadLevel.html

游戏视图(Game View)右上方状态(Stats )按钮。这个状态按钮按下时,显示一个重叠视窗与实时渲染统计数据。帮助优化你的游戏,这是非常有用的。统计数据取决于你的构建目标显示不同的内容。

Statistics:统计数值

Time per frame and FPS
每帧的时间和FPS       处理和渲染一个游戏框架(以及由此产生的FPS)的需要多少时间。请注意,这个数量只包括游戏视图更新和渲染的帧,不包括在编辑器中绘制场景视图,检视窗口和其他仅编辑器进程的时间。

Draw Calls
描绘调用       批处理后网格绘制的总数。请注意其中有对象被多次渲染(例如,被像素灯光照亮的物体),每次渲染结果都会导致一个单独的描绘调用。 drawCalls 上限35(具体怎么降低DrawCalls,请自己搜搜) 

Batched (Draw Calls)
批处理(描绘调用)  最初单独描绘调用被添加到批处理的数量。批处理是引擎试图结合多个物体渲染进行一次描绘调用,以降低CPU开销。为了确保良好的批处理,你应该尽可能多的在不同物体之间共享材质。Batched越高越好整合渲染, 

Tris and Verts 三角面与顶点数   绘制三角形和顶点的数目。为低端硬件的优化时,这多是重要的。

Used Textures 使用的纹理   绘制该帧使用的纹理数和它们使用的内存。

Render Textures
渲染纹理       渲染纹理的数量和它们使用的内存。每帧切换激活纹理的次数也显示。

Screen 屏幕    屏幕的大小,连同其抗锯齿级别和内存的使用率。

VRAM usage 显存使用 当前显存(VRAM)的使用情况的大约范围,同时显示你的显卡有多少显存。 

VBO total
顶点缓冲区对象总数 上传到图形卡的唯一网格(顶点缓冲区)的数量。各种不同的模式,将导致要创建新的VBO。在某些情况下缩放对象会导致要创建额外的VBO。在静态批处理的情况下,然而对象数量可以共享相同的VBO 

Visible Skinned Meshes 
可见蒙皮网格 渲染蒙皮网格的数量 .

Animations 动画 正在播放动画的数量。 

Form: http://game.ceeger.com/Manual/RenderingStatistics.html

Unity3d iphone 游戏开发优化

试试把gameobject 一个一个禁用,确定下什么最影响性能

- stats 里面有多少个 Draw calls & 三角形

合并网格物体

合并材质张数

不要用网格碰撞.

- Unity对带动作的模型渲染消耗比较大,如果是静态的不带动作文件的模型渲染不会出现效率问题,但是要确保只绘制屏幕内的东西

1. 尽量避免每帧处理

比如:

function Update() { DoSomeThing(); }

可改为每5帧处理一次:

function Update() { if(Time.frameCount % 5 == 0) { DoSomeThing(); } }

2. 定时重复处理用 InvokeRepeating 函数实现
比如,启动0.5秒后每隔1秒执行一次 DoSomeThing 函数:

function Start() { InvokeRepeating("DoSomeThing", 0.5, 1.0); }

3. 优化 Update, FixedUpdate, LateUpdate 等每帧处理的函数
函数里面的变量尽量在头部声明。
比如:

function Update() { var pos: Vector3 = transform.position; }

可改为

private var pos: Vector3; function Update(){ pos = transform.position; }

4. 主动回收垃圾
给某个 GameObject 绑上以下的代码:

function Update() { if(Time.frameCount % 50 == 0) { System.GC.Collect(); } }

5. 运行时尽量减少 Tris 和 Draw Calls
预览的时候,可点开 Stats,查看图形渲染的开销情况。特别注意 Tris 和 Draw Calls 这两个参数。
一般来说,要做到:
Tris 保持在 7.5k 以下
Draw Calls 保持在 20 以下

6. 压缩 Mesh
导入 3D 模型之后,在不影响显示效果的前提下,最好打开 Mesh Compression
Off, Low, Medium, High 这几个选项,可酌情选取。

7. 避免大量使用 Unity 自带的 Sphere 等内建 Mesh
Unity 内建的 Mesh,多边形的数量比较大,如果物体不要求特别圆滑,可导入其他的简单3D模型代替。

8. 优化数学计算
比如,如果可以避免使用浮点型(float),尽量使用整形(int),尽量少用复杂的数学函数比如 Sin 和 Cos 等等。

1、 ArrayList的对象在使用时应该注意以下事项
使用
arraylen = myarray. length;
for (i=0; i< arraylen; i++)
{
}
避免
for (i=0; i<myarray.length; i++) {
}

2、 少用临时变量
使用
var touch:Vector2;

function Update(){
if (count==0) { touch=iPhone.GeTouch(0).position;}
}
避免
function Update(){
if (count==0) {
var touch:Vector2=iPhone.GeTouch(0).position;
}
}

3、 少用算数符号/,改为乘以相应小数
使用
x * 0.5f
避免
x/2

4、 动作和AI不需要每帧都执行
if (GLO.count%3){
// execute the enemy aim at your player every 3 Update
}
if (GLO.count%5){
// execute player IA every 5 Update
}

5、 Mesh部分
-对于一个mesh不要使用多张materials。我遇到过这样的问题是一个小模型拥有2materials导致了2倍甚至更多的时间!而当我减少一个material的时候,时间减少了一半。
使用多边形粉碎机降低你mesh的面熟,但是虽然你的mesh看起来像一个正方形。你可以通过调整在导入区的” smoothing angle选项来进行补偿。对于一个高优化的mesh,调整平滑角度到80甚至120度,你的mesh将看起来很配合虽然只是一点点的数量(???)
不要尝试使用任何昂贵消耗的数学公式,例如sin() 或 cos(),用预定义好的0360度的sin(x)cos(x)的值组成链表来替代。当然了前提是你不需要太精确。
尽可能的使用整形。如果你有一个检测屏幕位置的变量或者一个计数器,定义成整形会更快。

原文地址:http://blog.csdn.net/liang_704959721/article/details/8167312

U3D游戏开发—程序员转型篇(二)unity界面认识

直接上图,主要分为5个区域 1,场景视图(Scene view): ,用于设置长以及放置游戏对象,是构造游戏场景的地方; 2,游戏视图(Game view): 由场景中相机所渲染出来的游戏画面,是...
  • gengbang
  • gengbang
  • 2016年03月09日 20:31
  • 1176

[Unity3D]Unity3D游戏开发之在Android视图中嵌入Unity视图

----------------------------------------------------------------------------------------------------...
  • z9895512
  • z9895512
  • 2015年09月15日 20:55
  • 1135

【Unity3D】场景切换、UGUI组件事件、开始游戏与关闭游戏

在《【Unity3D】公告栏与开始界面的布置》(点击打开链接)我曾经简单地提到UGUI是怎么布置与使用的,但这根本不完整,就像单身狗缺个另一半永远只能被喂狗粮似的,组件也因为事件的存在才能够精彩。因此...
  • yongh701
  • yongh701
  • 2017年04月15日 11:27
  • 3659

Unity3d网络游戏Socket通讯

网络游戏是一种人们娱乐休闲互交的应用软件。既然是互交,当然需要彼此间的了解通讯。要通讯那必须需要Socket:我们今天要实现的主角即套接字。Socket的英文原义是“孔”或“插座”,正如其英文原意那样...
  • qyxls
  • qyxls
  • 2014年05月11日 20:49
  • 3756

【Unity3D】学习笔记(第3记) 2D游戏开发基本技巧之场景切换(Javascript)

通常的2D游戏游戏都是横版或竖版d
  • chy_xfn
  • chy_xfn
  • 2014年10月14日 10:43
  • 1719

Unity3D无缝场景切换解决方案 - 简单场景切换

所谓无缝场景切换,无非是涉及到场景或物体的预读,复杂点涉及下场景卸载,在复杂点涉及到场景二维数组,再在复杂点涉及数据结构用二叉树实现场景资源有序的读取与卸载。当然,复杂的我以后慢慢再说,比较懒,先写最...
  • MyArrow
  • MyArrow
  • 2015年01月28日 08:22
  • 13517

Unity 使用 Application.LoadLevelAsync() 方法切换场景后场景变黑问题解决方法

最近正在写一个益智类的游戏,结果在关卡切换的时候遇到了一个非常神奇的问题,就是场景变黑了,吻了好多人都没有解决,最后听一位大大说可能是灯光的原因,然后就去琢磨灯光,试了半天,问题终于解决了,现在特来分...
  • qq_20834273
  • qq_20834273
  • 2015年12月06日 16:56
  • 4192

全新的Unity移动游戏优化解决方案

全新的Unity移动游戏优化解决方案 在今年的CJ CGDC 中国游戏开发者大会上,来自Unity大中华区的技术支持经理张鑫带来了关于《全新的Unity移动游戏优化解决方案》的精彩主题演讲。本次演讲分...
  • husheng0
  • husheng0
  • 2015年08月16日 01:11
  • 1738

Unity 之Bug - Scene视图的物体Game视图不显示

先交代剧情:我们要做一个人物从后方走到前方,摄像机从上方降到下方,正好照到人的背影。 如下图所示: 我们做了一个动作,人物从根节点一直走到前方,摄像机从上方一直降落到下方。绿色球就是人物的根节点...
  • qq563129582
  • qq563129582
  • 2016年08月02日 16:00
  • 4363

Unity Game窗口中还原Scene窗口摄像机操作 强化版

之前写的那个版本看来真的是不行啊。最近研究了一下官方第一人称脚本,人家的平滑过渡真的是没得说。借鉴了一下,写出来了一个新的比较完美的控制。 之前我们的操作是通过鼠标输入的开始坐标和转动坐标。其实官方...
  • yangshbb
  • yangshbb
  • 2016年08月12日 13:15
  • 1312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unity基础开发----切换场景、游戏视图(Game View)、iphone优化
举报原因:
原因补充:

(最多只允许输入30个字)