Unity打包后窗户化切换
打包后窗口化切换常见的电脑游戏基本上都存在着将游戏在窗口化和全屏 模式之间进行切换的功能,全屏模式有助于提高沉浸感,窗口化则是可以拥有一个可视化关闭游戏程序的快捷键
使用命令1Screen.fullScreen = !Screen.fullScreen;
以上是让打包后的游戏在全屏和窗口化之间来回切换的简单代码
InputSystem按键重绑定
InputSystem按键重绑定参考教程【unity小技巧】新输入系统InputSystem重新绑定控制按键(最全最完美解决方案)_unity input system-CSDN博客
action的binding索引
一个action下存在多个binding的情况下,如果想要通过所以来获取到binding对象,以上是它们的索引,从0开始,依次递增
索引获取在InputSystem官方给出的Samples中,可以通过预先设置的 binding 和代码来获取到指定binding的有效索引
属性定义
12[SerializeField]private string m_BindingId;
获取索引
1234567891011121314151617181920212223242526272829/// <summary>/// Return the action and binding index for the binding that is targeted by the component/// according to/// </summary>/// & ...
Unity —— AI
Unity学习路线图AI 系统导航 AI navigation
有限状态机 FSM
AI行为树
Unity—— HybridCLR,热更新
https://zhuanlan.zhihu.com/p/485311523 入门介绍 ,知乎
https://hybridclr.doc.code-philosophy.com/docs/other/businesscase 使用文档
https://code-philosophy.com/ 开发商官网
Unity性能优化——资源优化
资源优化Mesh动态模型:面片数<3000材质数<3骨骼数<50静态模型:顶点数<500
上述是在手游中模型优化的参考标准,
Audio:长时间音乐(背景音乐):使用mp3的压缩格式,主要是减少了安装包的大小
短时间音乐(音效):使用wav的格式 ,经常性的播放,不需要频繁加载,使用mp3则是会频繁的解压缩操作
推荐博客:unity优化—资源优化_unity发布exe时很慢-CSDN博客
有对Unity中音频资源导入的详细讲解
Texture贴图长宽<1024,Unity最高支持2048
Shader尽量减少复杂的数学运算
减少discard操作
资源冗余Resources目录下的所有文件最后都会被打包到安装包中
同样的资源建议存在唯一路径
资源检测与分析AB包上的分析
Unity官方自带的UPR分析工具,第三方工具UWA
UWA | 致力于游戏VR和AR应用提供项目研发解决方案 | 简单优化、优化简单 | 侑虎科技 (uwa4d.com)
性能优化LOD
模型贴图精度调整,原糊近清,直接的参照是图中的组件,在assets文件夹中将对应的模型拖拽到该 ...
Unity——Dots
Unity学习目标
Dots
Unity性能优化
主界面操作窗口
参数解释CPU第一个带ms的数据是完成主线程一帧的时间,第二个是渲染一帧图片的时间,值小点好,
Batches批次,表示调用(Draw Call,也可以简称为DC)的总次数,详见Unityshader的学习笔记,值小点好,在屏幕上输出一个画面
Save by barching有多少DC被合并到了一个批次,将可能然让这个数据大
以下二者的数量统计都是相对于摄像机的视椎体来讲的
Tris屏幕中剩余三角形数量,就算是一个cube在屏幕部分看不见,依然是要计入
verts屏幕中剩余顶点数量,Unity中对于顶点的判断是一个面由两个三角形组成,这两个三角形存在共用顶点,一个cube是有由六个面组成,因为一个cube的顶点数量为 4 * 6 =24
(在3D建模软件中创建的模型导入到Unity后,该模型在Unity中显示的三角面和网格顶点的数量和在3D建模软件中的可能不同。因为3D建模软件和Unity对模型的三角面和网格顶点的计算方式可能是不一样的。)
Screen:屏幕分辨率以及在内存中占据的大小
红框内的数据代表启动 垂直同步
垂直同步解释垂直同步用于将游戏 ...
Unity知识
随机数生成在几秒内连续生成随机数的情况
1234567 Random.InitState((int)Time.time); //使用时间作为每次生成的种子, float randomKey = Random.Range(-5f, 5f); //会生成随机的数字float randomKey = Random.Range(-5f, 5f); //只会返回一个固定的值float randomKey = Random.value * 10f - 5f; //只会返回一固定的值
资源释放对于实现了IDisposable的类来讲,其实例对象都可以通过 using var 来进行对象的获取,这样在超出该对象的作用域后,会默认调用实现的Dispose方法
12345678 using var evt = PlayerRegisterEvent.Get(); //使用using在超出作用域后自动调用Dispose()方法 public void Dispose() { GameEventPool<T>.Push ...
Unity组件——AI navigation
AI navigation基础
属性讲解Agent Radius:代理半径,决定了烘焙路面距离墙面的距离,当出现两堵墙距离过近导致没有路径出现的情况,可以适当调小该属性
Height:代理高度,限制代理对象的高度,调整数值可以让代理角色通过桥洞或者隧道等有高度限制的场景
Step Height:台阶高度,在这个高度范围内的 台阶 会生成烘焙路径
Max Slope:可以生成烘焙路径的斜坡最大倾斜角度
Generated Links自动生成外链
Drop Distance:下落高度
Jump Distance:跳跃距离
Component
属性讲解Nav Mesh Agent:自动寻路代理对象,需要自动寻路的添加该组件
Nav Mesh Obstacle:被其余系统驱动的移动物体,需要Agent主动避开
Nav Links
NavMeshdifler
NavMeshSurface
使用
在需要烘焙的游戏对象上添加以上组件,保持默认设置,点击有右下角的bake按钮就可以在该游戏对象上生成烘焙路径,Agent可以在该对象表面进行寻路操作
每次子对象的变动,都需要 ...
Unity组件——DotWeen
DotWeen入门实现效果
打击感
打字机
移动
缩放
代码实现引用命名空间
1using DG.Tweening;
打击感
12Camera.main.transform.DOShakePosition(2,3); //将摄像机按照指定的参数进行晃动 //前者是持续时间,单位是秒,后者是强度
打字机123Text text;text.DOText("要进行打字机变换文本内容",3);//对应的需要两个参数,第一个如内容所示,第二个参数代表的是第一个的内容需要在几秒内完成,单位是秒
移动1234Text text;text.transform.DOMove(new Vector2(1,1),3); //在3秒内从当前位置移动到指定位置text.transform.DOMove(new Vector2(1,1),3).From(); //在3秒内从指定位置回到当前位置
缩放1234567text.transform.DOScale(1,2); //在2秒内将缩放至从当前值变为1text.transform.DOScale(1,2).From(); ...