untiy注意问题

2024-08-21 10:32
文章标签 untiy 注意 问题

本文主要是介绍untiy注意问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  //加载索引为 0 的关卡

  Application.LoadLevel (0);

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

  static function LoadLevel (name : string) : void

  游戏视图(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 动画 正在播放动画的数量。

  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;fori=0; i< arraylen; i++){}

  避免
  

fori=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。我遇到过这样的问题是一个小模型拥有2张materials导致了2倍甚至更多的时间!而当我减少一个material的时候,时间减少了一半。

  使用多边形粉碎机降低你mesh的面熟,但是虽然你的mesh看起来像一个正方形。你可以通过调整在导入区的“ smoothing angle”选项来进行补偿。对于一个高优化的mesh,调整平滑角度到80甚至120度,你的mesh将看起来很配合虽然只是一点点的数量(???)

  不要尝试使用任何昂贵消耗的数学公式,例如sin() 或 cos(),用预定义好的0到360度的sin(x)和cos(x)的值组成链表来替代。当然了前提是你不需要太精确。

  尽可能的使用整形。如果你有一个检测屏幕位置的变量或者一个计数器,定义成整形会更快。

这篇关于untiy注意问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092902

相关文章

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

SpringMVC入参绑定特别注意

1.直接在controller中定义一个变量,但是此种传输方式有一个限制就是参数名和请求中的参数名必须保持一致,否则失效。 @RequestMapping("test2")@ResponseBodypublic DBHackResponse<UserInfoVo> test2(String id , String name){UserInfoVo userInfoVo = new UserInf

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR