unity3D游戏的优化
文章平均质量分 78
CZandQZ
这个作者很懒,什么都没留下…
展开
-
网格擦除效果——类似宝剑大师
最近找工作有时间可以把之前工作中遇到的一些问题及解决办法写出来,当然这份代码并不是公司的那份代码,这份代码是在源项目上解决思路写出来的,所以做出来可能有点乱。首先思路跟2D的思路差不多的,因为我们只是在做3D表现而已。首先在擦除的时候他的原理跟2D的一样,但是他的网格渲染方式可能跟2D就不一样了,还是一样我们需要首先生成一个3D的网格。3D网格生成的核心代码如下:private GameObject GeneratorBody(string bodyName, Polygon points)..原创 2022-03-14 20:22:23 · 670 阅读 · 2 评论 -
网格擦除效果
由于之前项目中有遇到那种需要做擦除效果,所以当时不知道用的什么技术,所以就把别人的游戏破解了,查到一个库:Clipper。结果在github上真的找到原作者写的c#库,原作者其实是写了一个mfc的exe运行文件,所以我们只需要原始的库文件就行了,至于怎么运行的就直接看的原mfc工程就是vs工程。这里有原工程的地址:Clipper download | SourceForge.net大家可以用vs打开源工程并运行,可以看到代码是怎么实现的,简单讲一下它的原理,例如地图是一个矩形,然后我们把一个圆放到一个.原创 2022-02-17 16:16:20 · 1946 阅读 · 0 评论 -
网格变形效果——黏液效果
做的效果图如上,效果制作分为3个部分,一部分是挤压,一部分是拖拽,一部分是复原。1 先说挤压吧,首先挤压有一个挤压区域,首先我们需要获取模型上所有的顶点并且模型的碰撞器会随着模型的变化而发生变化因为只有这样碰撞才会实时的发生反馈。定义挤压区域,判断所有的顶点是否在以鼠标位置为中心圆的挤压半径,如果在圆内那么它的y坐标向0插值。反之不会发生任何变化。2 再说拖拽,拖拽也是需要判断拖拽区域,判断所有顶点是否在以鼠标位置为中心圆的拖拽半径,如果在园内的话,拖拽方向也是鼠标的当前坐标-鼠标上次坐标。...原创 2022-02-15 23:05:01 · 614 阅读 · 0 评论 -
简单弹簧的应用
上面3个图片就是对弹簧这种运动的基本应用。其实弹簧的原理很简单,公式就是胡克定律,高中的课程中有讲解,这里我们需要把公式转换成Unity里面具体的参数和方法。核心的原理是下面几段代码 float force = 0 - _angle; _velocity += _springForce * force * Time.deltaTime; _velocity *= 1 - _damp * Time.deltaTime;代码第一行是来计算返回默认点的力,默认初始值为0,第二...原创 2022-01-21 15:20:53 · 3107 阅读 · 0 评论 -
Unity 草的制作
如果把草当成一个一个的模型的话,我们在一个平面上铺满10000个草并且让他和一些物体进行交互的,如果用传统的做法,我们把每一个草上面挂载一个脚本的话,运行的时候你就会发现,这样帧率其实并不高的,在一个update里面每帧访问一个数组长度为10000的数组他的帧率其实都不会很高的,更何况我们还需要草动起来且还需要有一定的交互能力,如果纯粹用cpu来模拟的话可能会比较吃力,所以这里打算用GPU来模拟大量粒子运动和交互。unity提供了一种compute shader来处理大量计算。GPU在大量运算时候它的效率是原创 2021-09-17 18:34:10 · 2323 阅读 · 0 评论 -
UGUI 优化
1 首先是图集的打包,demo还是以消灭病毒里面素材来做一个测试来观察如何优化。我们发现Batches的值为6 ,然后图片没有打包成图集的情况。然后我们将这6张图片打成一张图集。这个时候我们发现Batches的值为1。我们知道减少Batches批处理的值可以适当的优化游戏。当然我们也不能把几张特别大的合成到一张图集里面,这就要具体美工给的图片具体分析不能一概而论,想上面一...原创 2019-10-16 16:10:02 · 347 阅读 · 0 评论 -
Unity 消灭病毒(98K)—2
写完玩家的移动,接下来就开始写玩家的射击。玩家是一直射击的,然后射击有个间隔。所以在Update里面就只是一个时间一直减,定义这个类为VirusPlayerShoot。 public void OnUpdate() { if (_isStartShoot) { _totalTime += Time.deltaTime; ...原创 2019-07-21 21:14:42 · 1385 阅读 · 0 评论 -
吃鸡游戏——消息处理
前面写过一篇消息处理,那是是很早写的。之前的那种做法是一个字典中键值为string类型,值为Action来实现类与类之间解耦。这种方式存在一定的弊端,用字符串来做键书管理起来并不是很好,约束性不强。这里可以用type代替,这里用结构体的type来代替前面的字符串来进行强约束。这里跟以前一样得有一个字典,字典的键为Type,值肯定是一个方法的指针,这里可以用Action,同样也可以用接口,Actio...原创 2018-04-18 16:22:15 · 966 阅读 · 0 评论 -
unity 贪吃蛇作战—2
今天接着上个讲,上次讲到了玩家蛇和BaseSnake类了,下面讲讲AI蛇了,这里我写的AI是比较简单了。AI蛇的AI逻辑是这样的,蛇主要存在2中状态,一种是漫游状态,漫游状态每隔多少秒,给蛇一个方向,然后蛇慢慢的旋转到给的方向。这里用的方法是前面讲到的行为那一节,简单的画个图解释一下原创 2017-07-21 18:05:03 · 691 阅读 · 1 评论 -
unity 贪吃蛇作战—1
前段时间看见有一个游戏比较火,一直没有时间模仿着写,最近空闲 抽出几天时间写写试试吧。做出来的只能算是一个demo吧。贪吃蛇的原理应该很简单吧,基本说一下,就是当蛇动起来的时候,蛇头的位置被重新赋值,蛇的第二段赋原先蛇头的位置,第三段赋原先第二段的的位置。所以原理其实很简单。就是一个数组每帧对数组进行修改,然后新对蛇段位置重新赋值。下面先给几张图片该项目只能算一原创 2017-07-20 11:20:31 · 966 阅读 · 0 评论 -
unity MVVM框架应用
好久没写博客,难得空闲一下写一篇博客。关于mvvm框架先简洁的介绍一下,所谓的m是模型层,v视图层,vm视图模型层,模型层具体就是我们建的具体的类,即纯粹是一个数据类,里面存在一些字段和属性,然后没有其他的。视图层嘛就是我们的ui了,即一个image,一个text,而视图模型就是填充视图层所需要的数据模型。即填充一个image需要一个图片的索引,填充一个text需要一个字符串,等等,所以视图模型层原创 2017-07-04 18:11:57 · 5842 阅读 · 1 评论 -
unity 图片资源导入优化
天天扯淡,都不知道写点什么,今天就分享一个国外大牛的一个unity 纹理压缩技术吧。本节的压缩算法叫做色度抽样算法。在数位图像处理领域中,色度抽样是指在表示图像时使用较亮度信息为低的分辨率来表示色彩(色度)信息。当对模拟分量视频或者YUV信号进行数字抽样时,一般会用到色度抽样。由于人眼对色度的敏感度不及对亮度的敏感度,图像的色度分量不需要有和亮度分量相同的清晰度,所以许多视频系统在色差通道上进行较原创 2016-07-08 11:20:22 · 4810 阅读 · 0 评论 -
unity —脚本优化— 消息处理系统
我们经常会遇到在运行状态下去找到一个现有对象。在这个例子中,我们需要添加新的敌人到EnemyManagerComponent中,以便于在我们的场景中可以按我们想的任何方式来控制敌人对象。由于涉及到开销,我们需要可靠和快速的方法作用于对象来查找已经存在的对象,而不用Find()方法和sendmessage()方法时,我们又该怎么做呢。这节主要讲解如果不用find(),又该完成对象之间的调用呢。原创 2016-07-02 00:24:15 · 8201 阅读 · 1 评论 -
unity 内存优化
找工作之余又开始扯淡了,讲内存优化其实跟unity好像并没有半毛钱的关系,纯粹是一些.net框架的事,先将几个概念有助于我们理解unity和.net.Monos就像是一个神奇的酱汁,混合成Unity平台这个食谱,并且赋予了它跨平台的能力。 Mono是一个开源的项目,基于API(应用程序编程接口),说明书和来自微软.NET框架的通用库工具建立起了它自己(Mono)的框架和库.但是却几乎不能对原创 2016-07-03 22:12:49 · 4439 阅读 · 0 评论 -
unity优化 —脚本优化2
接着前面脚本优化讲,我们还是深入的讲解脚本该如何优化。在其它的一些情景中,我们希望组件或对象被禁用后,他们能够离玩家足够远,这样他们可能是勉强可见的,但是又离对象特别远。一个贴切的例子是AI生物的巡逻,我们可以在一定的距离内看见,但是我们不需要它们处理任何事情。下面的代码是一个简单的程序,用来定期检测到目标的总距离并且如果靠的太远就禁用自身。 [SerializeField] Game原创 2016-06-29 23:42:01 · 641 阅读 · 0 评论 -
unity优化—资源优化
这节主要讲unity资源优化,先学习一个概念吧:资源管道,原始文件通过内容管道变成了一个可被Unity高效使用的中间文件 ,这不是Unity里面的一个概念,但Unity的工作行为和它很类似;Unity在导入资源的时候可以使用类型丰富的文件,这不意味着在我们生成的App中同样也是这些文件,资源通过Unity的资源管道变成了较为统一的格式。我们在导入资源的时候有很多参数可以调整,1 首先从原创 2016-07-01 00:50:13 · 14088 阅读 · 8 评论 -
unity 简单编辑器的扩展应用—1
这节简单讲一下一个简单的编辑器的应用。在后面会继续将一些编辑器扩展的东西。在菜单栏的扩展我就不讲了,因为那些都比较简单在百度上基本都可以找到的。也有很多人讲到那些扩展。这节先讲一下一个button扩展吧。我记得我在前面的项目中用到了这样一个简单的应用。 这是一个简单的效果图,当然我们还有一种更简单的方法来实现它,我们可以重新建一个类,让这个类继承Editor,然后让它来编辑我们图中这个原创 2016-07-25 23:06:58 · 815 阅读 · 0 评论 -
理解引导力行为集合
引导力行为,也就是物体以原来的速度移动的时候。如果npc想要跟随敌人的话,我们往往不是简单的朝敌人的方向前进,同时这也不符合现实生活中的情形,在as3和flash中,我们通常给npc添加一个npc到敌人的引导力。如果npc遇到一个厉害的玩家,如果ai做得好的话,这时npc应该给它添加一个逃避敌人的引导力。大家应该玩过英雄联盟吧,当我们玩蜘蛛的时候,蜘蛛变成蜘蛛形态的时候,小蜘蛛会跟随大蜘蛛,并且小原创 2016-06-22 21:03:56 · 674 阅读 · 0 评论 -
untiy优化—脚本优化
这次我主要给大家讲一下使用unity中对脚本进行优化。 1 使用最快的方法或者组件 unity里面有几种不同的GetComponent()方法,unity中有3中重载GetComponent(string) , GetComponent() 以及 GetComponent(typeof(T))。最快的版本取决于我们允许的unity的版本。在unity4.0中,GetCompon原创 2015-12-16 00:32:36 · 967 阅读 · 0 评论