![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
文章平均质量分 91
弹吉他的小刘鸭
Happiness is nothing but self-building.
展开
-
Unity ECS记录
我之前写过文章Entity Component System与Entity Component介绍EC系统和ECS系统的区别,几年前的Unity和UE还都是用的EC框架,但这几年我看他们都开始往ECS架构调整了,Unity推出了DOTS系统,UE5里推出了Large Entities of Entities with Mass,ECS架构对内存和数据存储更友好一些,两个引擎都做出这个操作也是很合理的。原创 2022-10-12 14:34:12 · 1593 阅读 · 0 评论 -
Unity新的Input System
新的Input系统并没有默认提供在Unity里,而是存在了对应的Package里,在。原创 2022-09-01 20:28:25 · 973 阅读 · 0 评论 -
Unity的APIUpdater
参考:https://docs.unity3d.com/Manual/APIUpdater.html参考:http://man.hubwiz.com/docset/Unity_3D.docset/Contents/Resources/Documents/docs.unity3d.com/Manual/APIUpdater.htmlUnity本身就是一个不断迭代和改进的软件,它的类、函数和API都可能会不断更改。当Unity进行大版本更新时,这些改变可能会带来breaking changes(毁灭性的改变)翻译 2022-07-08 21:07:15 · 780 阅读 · 0 评论 -
Unity的GraphView
参考链接:https://www.youtube.com/watch?v=7KHGH0fPL84&ab_channel=MertKirimgeriGraphView介绍Unity在2018.1开始加入了一个node system,它不需要在Unity里安装任何Package或者像XNode一样添加任何脚本,只需要使用Unity的default api即可。Unity里的Shader Graph,VFX Graph和Visual Scripting都是通过Graph View API实现的。相关原创 2022-03-03 14:30:17 · 11183 阅读 · 3 评论 -
Unity的Reorderable List用法
关于ReorderableListUnity官方文档里完全没有提到ReorderableList类,这是因为它不在UnityEngine或UnityEditor的命名空间下,而是在UnityEditorInternal命名空间下,这个命名空间里的东西是没有官方文档支持的。ReorderableList的作用它的作用,是让一个数组,在Unity的Inspector界面上显示得更好一些。举个例子,如果我一个MonoBehaviour脚本,里面有个数组,两种写法都可:// 写法一// 注意Wave是原创 2021-12-29 14:19:18 · 7744 阅读 · 1 评论 -
Unity的PreviewRenderUtility类
参考:https://answers.unity.com/questions/1332916/any-idea-how-to-use-previewrenderutility.html代码如下:namespace UnityEditor{ public class PreviewRenderUtility { public Camera m_Camera; // obsolete public float m_CameraFieldOfView;原创 2021-11-29 15:43:23 · 1901 阅读 · 0 评论 -
Unity的PlayableGraph切换AnimationClipPlayable时关于RestPose的思考
问题是这样的,我有这么个简单的应用场景,一个PlayableGraph,只有一个output为AnimationPlayableOutput,然后直接连接一个AnimationClipPlayable。现在我的需求是,Editor下,使用脚本,把它的播放状态换成我一个新的Animation Clip。一开始我的代码是这么写的:public class Test : MonoBehaviour{ public AnimationClip clip; public AnimationCl原创 2021-11-26 11:48:35 · 3846 阅读 · 2 评论 -
Unity Timeline简单操作说明
参考:https://styly.cc/tips/timeline_unity_kaki/介绍The Unity Timeline is a feature that allows you to visually edit music, play animations, show/hide objects, control particles, etc. along the time axis.Unity Timeline这个功能,可以根据时间轴来进行可视化的编辑音乐、动画等资源,有点类似于一个视原创 2021-11-12 14:31:33 · 5451 阅读 · 0 评论 -
Unity UI Toolkit Manual文档阅读记录
UI ToolkitUI Toolkit是Unity最新的UI系统,它主要被设计用来优化不同平台的性能,此项技术是基于标准的web技术开发的(standard web technologies),既可以使用UI Toolkit来拓展Unity Editor,也可以在打包出来的游戏和应用里使用Runtime的UI(但需要安装UI Toolkit Package)UI Toolkit包括以下内容:一个保留模式的UI系统(A retained-mode UI system),拥有创建UI的核心特性和功能原创 2021-10-20 13:34:09 · 7328 阅读 · 1 评论 -
Unity Custom SRP Part 1 —— Custom Render Pipeline
在学习之前,带问题来,问题就是,什么叫支持SRP,怎么就不支持SRP,比如说我写个工具,要让我支持SRP,那我应该怎么办?背景介绍Unity总的来说有两套渲染管线:Unity自己提供的渲染管线自定义的SRP,Unity提供了两个使用 SRP 的框架,分别是:高清渲染管线 (HDRP) 和轻量级渲染管线 (LWRP),二者在Package Manager里提供。两者都包含了 Shader Graph 和后期处理 (Post-processing) package,这些内容都是从Unity2018开原创 2021-08-01 17:43:47 · 1054 阅读 · 2 评论 -
使用体素场存储场景数据
对于一个体素场,可以利用两个数组来存储,数组spanArr用于存储体素的上表面高度,indexArr用于标识每一列体素在spanArr里的下标位置,举个例子,体素场如下图所示,每一个格子代表空间上的一列体素,体素的下坐标默认均为0,所以不进行记录,下图一个格子里数据为6,8,10,说明该列有两个体素,第一个体素下表面高度为0,上表面高度为6,第二个体素下表面高度为8,上表面高度为10:按照从上到下,从左到右的顺序spanArr = {3,5,7,9,4,3,8,2,2,6,8,10,10,2,2,3,原创 2021-05-24 14:26:12 · 987 阅读 · 0 评论 -
Unity Asset Workflow Manual阅读记录(总体概述+AssetDatabase部分,Version 2020.3)
Asset workflow这一章主要介绍了Unity与资源打交道的相关功能,资源在Unity里也叫Assets,介绍大概分为以下几个部分:常见Asset的类型Asset Packages使用Asset StoreAssetBundlesThe Asset DatabaseScripting with assets同样还有三个相关的内容:Unity Accelerator under the Unity Services sectionAsset Server (Team Lice原创 2021-03-25 19:12:27 · 7196 阅读 · 0 评论 -
Playable API
参考链接:https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247493316&idx=1&sn=7e4fef834a8066faca3d2f1f1a090bb4&chksm=fe1dd26fc96a5b79856840f556cf65026facb83520ac1891605e42d5e777d30a0d5219060e21&mpshare=1&scene=1&srcid=0606YJLYn原创 2021-03-21 12:56:44 · 1714 阅读 · 2 评论 -
Unity Runtime创建和编辑AnimationClip
这篇文章主要是介绍Unity在Runtime创建和编辑AnimationClip的,读这篇文章之前最好有Animator和Animation组件的用法基础。首先需要介绍两个概念AnimatorOverrideController和RuntimeANimatorController,如果只想看怎么写代码的可以直接看后面。Animator Override ControllersAnimator Override Controller是一种asset文件,其文件后缀为.overrideController原创 2021-03-11 18:24:03 · 3249 阅读 · 5 评论 -
Unity得到任意位置的BoxCollider的八个顶点位置
先直接下结论,函数如下:Vector3[] GetCornersForBoxCollider(){ Vector3[] verts = new Vector3[8]; BoxCollider b = obj.GetComponent<BoxCollider>(); //retrieves the Box Collider of the GameObject called obj verts[0] = b.gameObject.transform.TransformPoint(b.cen原创 2020-09-29 13:44:06 · 2511 阅读 · 0 评论 -
Unity崩溃检查
经常碰到Unity崩溃的情况,但是网上的帖子基本全是在灌水和复制,所以这里做一个总结,主要是针对Editor模式下的Unity Crash问题。Windows系统下,Unity Log文件的路径为C:\Users\username\AppData\Local\Unity\Editor文件夹里(注意AppData是隐藏文件夹),可以看到这里有三个文件:分别有什么用呢?Editor.log 记录了最新的Unity的log信息Editor-prev.log 记录了上一次运行的Unity的log信息存原创 2020-09-15 11:33:12 · 2960 阅读 · 0 评论 -
Unity的Bound.Encapsulate函数介绍
Unity对该API的介绍简单的令人发指:主要疑问在于,当Bound扩大时,是以怎么样的扩大方式,其中心点center的坐标变不变,现在只能做个试验了。放置两个尺寸为单位长度的cube,第一个cube中心点为世界原点,第二个cube中心点为(2,0,0),如下图所示,原来的bound为红色方框,中心点为红色点,代码如下所示,最后发现其中心点坐标变了:public class TestBounds : MonoBehaviour{ public GameObject cube1; p原创 2020-09-14 14:28:01 · 3895 阅读 · 2 评论 -
Unity打开新项目报错
如下图所示,第一次打开项目的时候报错,内容大致为:FileNotFoundException: Could not find file “D:\GithubProjects\Navigation\VoxelWorldandAstarRoadGenerator\Voxel-World-and-A-star-Road-Generator\Voxel World and A-star Road Generator\Library\PackageCache\com.unity.analytics@3.2.2\原创 2020-09-01 13:37:17 · 7412 阅读 · 0 评论 -
Unity NavMesh的Layer合并的问题
Unity的导航网格拥有32种不同的AreaType类型,我发现了这么一个情况,对于两个重叠在一起的不同AreaType类型的物体,最终的导航网格到底是按照哪一个?如下图所示的例子,展示了第一种情况,较高的Cube为Walkable类型,较矮的为自定义的类型,设置完成后Bake导航网格,可以看到地面表面是什么物体,出现的就是什么类型的导航网格。再来看看第二种情况,如果再把矮的Cube拉高一点,让二者高度更接近,如下图所示:再去Build导航网格,会发现出现的都是较矮的Cube的导航网格类型,如下图原创 2020-08-25 18:57:06 · 629 阅读 · 0 评论 -
Unity使用OffMesh-Link时匹配动画动作
正常Unity的OffmeshLink是嗖的一下传送过去,如果要想在这里用自己的动画动作跳跃过去的方法如下,主要是知道Unity的一些相关API的使用方法。下面是一些重要的API或数据结构:_navAgent.autoTraverseOffMeshLink = false; //in Start(),设置不要自动进行Offmeh的传送_navAgent.currentOffMeshLinkData; //the link data - this contains start and end point翻译 2020-08-21 11:24:38 · 777 阅读 · 0 评论 -
通过脚本设置UnityNavigation里面Bake的相关参数
很无语的是Unity连这个基本的API都没提供,下面代码是通过UnityEditor.AI里的NavMeshBuilder的navMeshSettingsObject来通过SerializedObject实现设置参数的,代码如下:using UnityEditor;using UnityObject = UnityEngine.Object; namespace Impossible.Ete{ public sealed class NavMeshSettings {转载 2020-08-07 11:21:10 · 758 阅读 · 0 评论 -
Unity Pivot and Center
Unity界面上有这么一个标签:左边有两种模式:Pivot 和 Center右边有两种模式:Global和Local,Global指的是世界坐标系的坐标,Local指的是Object的局部坐标系的坐标但是Pivot和Center点的区别在于,Pivot Point翻译过来就是中心点,说白了就是这个Object的transform的position对应的世界坐标系的值,Center点是Object对应的AABB的中心点,并不是其实际位置坐标那么举个例子,如下图所示,两个物体的pivot坐标都是一样的原创 2020-07-23 19:23:10 · 989 阅读 · 1 评论 -
Unity的坑——避免用New来创建继承于MonoBehaviour脚本的对象
直接说最重要的一句话,在Unity中,继承于MonoBehavior的对象,不能使用new关键字来创建,而必须使用AddComponent或Instantiate函数来创建对于继承Mono的对象,如果强行使用new创建,得到的结果为null,可以看下面这个例子:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Item1 : MonoBehaviour{ pu原创 2020-06-12 20:13:58 · 13917 阅读 · 7 评论 -
Jenkins上Unity打包出错
最近工作需要在Jenkins上打Unity工程的IOS包,结果报错了,报错如下:LICENSE SYSTEM [20171026 9:26:24] No start/stop license dates setLICENSE SYSTEM [20171026 9:26:24] Next license update check is after 2027-10-17T15:03:15最后还报错(Filename: /home/builduser/buildslave/unity/build/Ru原创 2020-06-03 13:39:52 · 888 阅读 · 0 评论 -
Unity Animation Miss Path
最近新接触到Unity的animation clip,工作上需要导入别人给的角色模型,这里记录一下遇到的几个问题:1.不能播放特定的Animation Clip在使用anm.Play函数时,报错The animation state could not be played because it couldn't be found!具体解决方法:需要检查两个点,第一,这个animation clip有没有放进对应Animation组件的列表里,如下图所示:第二,可能是Animation Clip的原创 2020-05-14 11:30:17 · 1882 阅读 · 0 评论 -
VS2017无法调试Unity
之前都好好的,打开一个新项目发现不能调试Unity了,需要选择Unity实例,如下图所示,这里总结一下VS不能调试Unity的几个原因:原因一首先检查VS有没有安装对应的环境,如果没有需要在VS里补充安装对应的组件,这个比较基础,不多说。原因二可能是把Unity对应版本下的exe改成了别的名字,默认下载的Unity软件就叫Unity.exe,如果自己改名了可能会造成上述问题。原因三当你开启了多个Unity项目时,上面这个框框就会出现,会让你选择具体打开哪个Unity.exe,但上述图中并没有任原创 2020-05-12 14:32:30 · 2238 阅读 · 0 评论 -
DllNotFoundException
最近在使用Unity调用C++的dll的时候出现了dllNotFoundException的报错,但是我明明在对应的路径放到了相应的dll,在这里总结一下解决错误的几种方法:一. 检查运行dll是否需要其他的dll不仅仅是适用于Unity,大多数dll的运行是需要其他dll的支持的,所以有时候会出现在电脑A上能运行该dll,但是换一台电脑就找不到对应的dll的情况,这个时候可以下载对应的工具D...原创 2020-05-07 20:48:35 · 5296 阅读 · 0 评论 -
Unity的Scene场景下的物体丢失问题
在使用Unity的时候经常发现一个问题,在Scene窗口下,如果对物体视角拉的太近,容易出现画面消失或者变形的情况,这是因为物体被Scene视角下的相机裁剪掉了,这种问题有一个很实用的解决方法,如果想看哪个物体,就在Hierarchy中选中该物体,然后按一下F键,再用鼠标滚轮拉近就可以了,拉近后的物体不会再消失或变形了。具体操作我们清楚了,这个原理我们可能还不清楚,为什么会这样,是因为Scene...原创 2020-04-21 21:40:47 · 9249 阅读 · 0 评论 -
Unity ExecuteInEditMode详解
Unity里继承MonoBehaviour的脚本,并不是一直都会执行的。Unity默认只有在Play模式下,游戏当前运行场景里的GameObject挂载的脚本才会执行,也就是说,我们必须按下Play按钮进入游戏,上述脚本才会执行。Unity还有另外的两种模式:Edit Mode和Prefab Mode,Edit Mode就是正常的Unity编辑状态,Prefab Mode是进入Prefab对其进行......原创 2020-04-10 18:23:13 · 13243 阅读 · 0 评论 -
Unity在Script组件上添加button等GUI组件
其实很简单,举个例子,比如说我们原有一个脚本,这个脚本是空的,叫做Original,我们把它挂载在一个空的GameObject上,如下图所示:Original继承MonoBehaviour,是个空脚本using System.Collections;using System.Collections.Generic;using UnityEngine;public class Orig...原创 2020-04-08 15:19:49 · 2336 阅读 · 0 评论 -
Unity中Mesh和subMesh的区别
Unity中的Mesh很好理解,就是一个网格的数据结构,里面记录了顶点、顶点索引等信息:Mesh mesh = new Mesh();mesh.vertices = ...mesh.triangles = ...mesh.uv = ...//都可以对其赋值那么subMesh是什么呢?首先可以发现,Mesh里面有这么一个参数mesh.subMeshCount,所以说明了subMesh是...原创 2020-04-01 18:14:11 · 9042 阅读 · 0 评论 -
Unity里的Mesh的SetVertices函数与mesh.vertices的区别
今天使用Unity的时候,需要自己创建Mesh,然后对Mesh里的vertices进行赋值,我发现了有两种写法:List<int>vertices = new List<int>();//写法1mesh.vertices = vertices.ToArray();//写法2mesh.SetVertices(vertices.ToArray());这两种写法有什...原创 2020-03-18 21:42:14 · 4605 阅读 · 5 评论 -
Unity的mesh的indices报错
今天构造Unity的Mesh的索引数组时遇到了个小问题,在此记录一下,报错如下:Failed setting triangles. Some indices are referencing out of bounds vertices. IndexCount: 9240, VertexCount: 9240UnityEngine.Mesh:set_triangles(Int32[])Load...原创 2020-03-10 16:45:07 · 3158 阅读 · 0 评论 -
Unity Animator Controller——Animator Sub-state machine
在Unity animator中,右键点击可以选择Create Sub-state machine:Sub-state machine可以用来优化动画之间的结构,我把它理解为一个结构体,可以存放Animation Clip和Animation Clip之间的transition关系,Unity官方给了这么个例子,可以把右图的一串状态直接移到substate machine里:移动后是这个...原创 2019-12-31 11:20:12 · 2550 阅读 · 0 评论 -
Unity——给离线的电脑导入PackageManager下载得到的资源包
由于新版本的Unity支持Unity Package Manager功能,能够直接在界面搜索需要的插件,直接进行安装。但直接搜索和安装这个功能需要计算机联网,对于离线或者是在内网环境下工作的计算机,这个功能就不适用了。所以需要在外网环境下,实现进行下载,再导入到内网环境。具体操作:Unity通过Unity Package Manager下载的内容,可以在这个路径中找到:把对应的文件移...原创 2020-04-08 17:49:13 · 4990 阅读 · 0 评论