
Unity
永夜悠
苦逼大学狗,交通运输专业
正在学习Unity制作独立游戏
展开
-
Unity Timeline的拓展,如何写脚本 【待写】
1、Timeline结构介绍首先,一个Timeline是由多个track组成。每个track又是又多个clip组成。如下图所示。这是一个动画的track。在后面,放着的idle、walk等都是一个个的动画clip。随着时间的进行,后面这些动画clip都会使用到挂在的物体上,让他做出这一个个动作。除了track、clip之外,上图中还有behaviour。正如名字一样,他是定义行为、掌管逻辑的东西。每一个clip都有其自己的行为。比如动画clip就可以将动画的数据作用到对应的物体上,声音clip就原创 2020-08-15 11:29:16 · 2646 阅读 · 0 评论 -
Unity Editor 编辑器拓展 11——SerializedProperty 和 SerializedObject 的使用
在自定Inspector面板的时候,经常会使用到SerializedProperty 和 SerializedObject。使用这两个类可以十分方便的进行数据的显示与处理。他们自带撤销记录。使用的Unity内置的设定序列化数据。与别的GUI控件搭配十分相称。SerializedProperty的坑其在调用DeleteArrayElementAtIndex()的时候不会自动调整列表,而是会在index处留下null。所以要想删除列表中的某个元素,需要对同一个Index...原创 2020-08-11 17:21:44 · 4214 阅读 · 0 评论 -
Unity Editor 编辑器拓展 10——PropertyDrawer 属性绘制器
描述用于从中派生自定义属性绘制器的基类。使用此基类可为您自己的Serializable类或者具有自定义PropertyAttribute的脚本变量创建自定义绘制器。PropertyDrawer 有两种用途:- 自定义Serializable类的每个实例的 GUI。- 自定义具有自定义PropertyAttribute的脚本成员的 GUI。如果您有自定义的Serializable类,可以使用 PropertyDrawer 来控制它在 Inspector 中的外观。 请参考以下...原创 2020-08-11 18:26:38 · 2141 阅读 · 1 评论 -
Unity Editor 编辑器拓展 09——Scene视图中编辑器拓展
Scene 视图添加可以通过在自定义编辑器中实现 OnSceneGUI 来向 Scene 视图添加额外代码。OnSceneGUI 的运行方式很像 OnInspectorGUI - 只不过在 Scene 视图中运行而已。为了方便在 Scene 视图中创建自己的编辑控件,可以使用在Handles类中定义的函数。其中的所有函数都是为 3D 模式的 Scene 视图设计的。//C# 示例 (LookAtPointEditor.cs)using UnityEngine;using UnityEd..原创 2020-08-11 13:02:55 · 476 阅读 · 0 评论 -
Unity Editor 编辑器拓展 08——各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility、
EditorGUIUtilityclass in UnityEditor/继承自:GUIUtility描述EditorGUI的各种辅助程序。静态变量currentViewWidth 当前 EditorWindow 或其他视图的 GUI 区域的宽度。 editingTextField 文本字段是否正在编辑文本? fieldWidth 为 Editor GUI 控件字段保留的最小宽度(以像素为单位)。 hierarchyMode Editor G.原创 2020-08-11 12:05:16 · 3479 阅读 · 0 评论 -
Unity Editor 编辑器拓展 07——GenericMenu 选项菜单
GenericMenuclass in UnityEditor描述GenericMenu 允许您创建自定义上下文菜单和下拉菜单。下面的示例打开了一个带有按钮的编辑器窗口。单击该按钮可显示上下文菜单,您可以通过该菜单更改应用于窗口中 GUI 的颜色。将示例的内容复制到名为 GenericMenuExample.cs 的脚本中,然后将其置于您项目中的 Editor 文件夹内。.using UnityEngine;using UnityEditor;public class Gener原创 2020-08-11 18:26:26 · 2430 阅读 · 0 评论 -
Unity Editor 编辑器拓展 06——ReorderableList 可拖动列表 的参数详解
aa原创 2020-08-11 15:24:53 · 2489 阅读 · 0 评论 -
Unity Editor 编辑器拓展 05——序列化
Unity有一个接口可以在序列化和反序列化时调用。ISerializationCallbackReceiver现在一个MonoBehaviour脚本实现这个接口,写了如下两个方法。OnBeforeSerialize()在序列化前调用。只要不对该脚本的数值进行更改,一直在调用。OnAfterDeserialize()在反序列化后调用。只有在对脚本的数值进行更改的时候,才会调用。...原创 2020-08-09 18:25:09 · 667 阅读 · 0 评论 -
Unity Editor 编辑器拓展 05——IMGUI的学习 续 EditorStyles
与第四章同样的,先来分析一下EditorGUILayout.IntField()的重载函数。简直跟第四章分析GUILayout.Button的重载函数的一模一样,有木有。关于参数的选取与使用,直接参考第四章的例子即可。这里说比较特别的一点,GUIStyle。有一个类叫EditorStyles。它有超多的静态变量,并且这些静态变量的返回值全都是GUIStyle类型。也就是说,我们可以通过EditorStyles类,更加简单的获取到转为编辑器界面定制好的GUIStyle。比如 GUIL原创 2020-08-09 13:45:38 · 899 阅读 · 0 评论 -
Unity Editor 编辑器拓展 04——IMGUI的学习、GUIStyle、GUISkin、GUILayoutOption
IMGUI是可以在运行时绘制的UI系统。因为全部都是代码搭建的UI,所以并没有UGUI适合游戏中显示,主要用于工作人员调试用。因为GUI和GUILayout可以用来绘制Editor界面,所以在Unity编辑器拓展里面开一专题进行IMGUI的讲解。GUI和GUILayout的区别就不详述了。GUILayout是带有自动布局功能GUI。如果想更加自由的定制UI界面的话,当然是使用GUI类。以01章的窗口为背景先分析一下GUILayout.Button的重载函数可以看到,有6个重载,.原创 2020-08-09 13:27:58 · 3124 阅读 · 0 评论 -
Unity Editor 编辑器拓展 03——自定义Inspector面板
当一个类继承自MonoBehaviour和ScriptableObject时,可以在Inspector面板中修改数据。如何让Inspector面板按照需要显示,就显得很重要。本片文章分多节讲解。涉及CustomEditor,CanEditMultipleObjects,CanEditMultipleObjects, OnInspectorGUI ,SerializeField,MonoBehaviour.OnValidate() 。撤销用到的Undo,SerializedObject, Seriali.原创 2020-08-11 18:26:42 · 1136 阅读 · 0 评论 -
Unity Editor 编辑器拓展 02——GUI与GUILayout与EditorGUI、EditorGUILayout 属性详解
经过学习,发现GUILayout类,EditorGUILayout类在混合使用。并且这两个类有很多的控件并不知到如何使用。下面决定深入学习。GUILayout控件列表 Button 按钮 Label 创建一个自动布局标签。 Space 在当前布局组中插入空白元素。 TextArea 创建一个可供用户编辑字符串的多行文本字段。 TextField 创建一个可供用户编辑字符串的单行文本字段。 Toggle 创建一个打开/关闭的开关按钮。原创 2020-08-09 13:33:41 · 10623 阅读 · 0 评论 -
Unity Editor 编辑器拓展 01——创建一个独立的编辑器窗口
1.using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;//窗口类需要继承自EditorWindowpublic class MyWindow : EditorWindow{ //窗口需要一个打开的方式 //MenuItem属性会在编辑器菜单上创建对应的选项 //点击选项即可创建窗口 [MenuItem("Window/M原创 2020-08-11 12:07:11 · 1763 阅读 · 0 评论 -
Unity Addressables 的使用
1加载资源和实例化using System;using System.Collections;using System.Collections.Generic;using UnityEditor.Experimental.SceneManagement;using UnityEngine;using UnityEngine.AddressableAssets;using UnityEngine.ResourceManagement.AsyncOperations;public c.原创 2020-07-22 11:59:45 · 4735 阅读 · 1 评论 -
Unity EventSystem IXXXHandler事件详解
官方文档链接:http://docs.unity3d.com/460/Documentation/Manual/SupportedEvents.html部分内容参考:https://blog.youkuaiyun.com/lyh916/article/details/44570503 Unity自己的事件系统开放了一些接口,我们只需要实现这些接口就行。但是这个接口所代表的含义需要我们深入理解。...原创 2019-02-10 13:56:49 · 3167 阅读 · 0 评论 -
Unity中动态读取图集 读取图集单个sprite的方法
假如我有一个图集,已经通过unity切割好了,它里面有这么的子图片。读取这个图集的方法很简单,使用object[] objs = Resources.LoadAll("Sprites/mapple");这个方法会返回object[]类型的数据。如果我这个图集里面有200个小图,那么返回的Object[]的length就是201个。是这样的objs[0]里面存储的是我这个图集...原创 2019-01-30 17:54:54 · 11469 阅读 · 3 评论 -
UGUI研究院之全面理解图集与使用(SpriteAtlas)
http://www.xuanyusong.com/archives/3304 https://www.xuanyusong.com/archives/3315原创 2019-01-30 22:24:12 · 2839 阅读 · 0 评论 -
Unity 插件编译版本不兼容问题
前两天把Unity 项目从5.4.3版本升级到5.5的版本,出现了一个特别蛋疼的问题项目中用到了Google.ProtocolBuffersLite.dll 这个动态链接库,在升级完Unity版本后出现了 ”Unity targets .NET 4.x and is marked as compatible with editor, Editor can only use assemblies...转载 2019-02-11 18:26:01 · 1755 阅读 · 0 评论 -
Unity Audio相关的初级讲解 AudioClip、AudioSource、AudioListener
AudioClip AudioSource声音源:常用的成员:PlayPauseUnPauseStopPlayOneShot:使用该方法可以在一个AudioSource播放多个声音PlayClipAtPoint:静态方法,可以在固定地点播放声音 AudioListener...原创 2019-02-22 23:36:19 · 4181 阅读 · 0 评论 -
Unity RectTransformUtility 几个函数的详解
1、 RectTransformUtility.ScreenPointToLocalPointInRectanglepublic static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint);根据屏幕坐标与相...原创 2019-02-24 15:46:26 · 9839 阅读 · 2 评论 -
Unity 2D 平台类游戏 人物移动 Rigidbody2D详解及其常用API
通常使用刚体与碰撞体共同构成人物移动的物理系统。有这么几点需要注意:1、动态刚体一旦与一个没有弹性的碰撞体碰撞了后,那么其速度立刻变为0,并且不会反弹回来,没有其他操作,其速度一直为0,并且只有动态刚体才能与其他的碰撞体发生反应,调用OnColliderEnter和OnTriggerEnter。2、动态刚体使用AddForce,它真的应用了物理模拟。也就是说,F*S=0.5*m*V^2...原创 2019-02-25 22:13:11 · 13525 阅读 · 0 评论 -
Unity 好用的插件 汇总
ProGrid :插件附带网格,我们可以使物体像网格自动粘合。UniRx :一个很好用的插件。具体百度。ProBuilder :自带的建模插件CineMachine:一个Post Processing Stack:一个后期图像处理插件,可以改变图像的色彩冷暖(目前只知道这个功能),其实它的功能一定超级无敌爆炸强。TextMesh Pro :一个字体插件,...原创 2019-03-01 17:54:34 · 1852 阅读 · 0 评论 -
Unity中的一些小问题(一)
1、使用Instantiate()实例化一个游戏对象,这个游戏对象的名字后面会添加(Clone)字样。2、Unity中切换场景的画,场景中所有的物体都会被摧毁(除非你将他设为Dontdestroy)。所以需要注意,对于这些切换场景就会被摧毁的物体,如果再次引用他们的话,就会出现引用为空的错误。这个切换场景摧毁的物体有如下的细节。首先,摧毁物体,自然物体上所有挂载的组件也会被摧毁,同时你写的脚本...原创 2019-03-03 12:52:43 · 353 阅读 · 0 评论 -
Unity中输入模块与控制模块与游戏实际表现的处理
向格斗游戏,我们通常有一个输入模块来处理我们输入的各项指令,如按下了什么键。控制模块就是处理游戏按键对应于什么游戏的表现,这个是一个映射的模块。比如,我按下了space键,那么人物就会跳跃。在我制作游戏过程中,发现这个控制模块很难写。比如我按space人物会跳跃一次,但是我想要人物可以二段跳,那么我就要修改这个控制模块。每一次我对控制模块的修改都会及其费时,并且思路不是很清晰。现在我来研究...原创 2019-03-03 20:10:47 · 858 阅读 · 1 评论 -
关于刚体Rigidbody2D与FixedUpdate的一些问题
在Rigidbody2D中有一些移动的方法可以调用,如MovePosition。这里再MovePosition的使用中,一定一定要注意这个函数只会在每一次FixedUpdate中更新,每一个FixedUpdate只会调用一次这个函数。也就是说,如果我在一个物体的一个FixedUpdate函数中调用两次这个MovePosition函数,那么第一次函数会被第二次函数给覆盖掉,在每次Fixe...原创 2019-04-04 12:50:25 · 1002 阅读 · 0 评论 -
Vector3.Lerp与Vector3.LerpUnclamped
Vector3.Lerp线性差值。Vector3Lerp(Vector3a,Vector3b, float t)返回一个Vector3的值。Vector3 retrun= new Vector3( (b.x-a.x)*t , (b.y-a.y)*t , (b.z-a.z)*t )也就是说,t为0,返回a。t为1,返回b。但是这里也有特殊情况,当t大于1时,返回的还是b...原创 2019-04-26 23:54:42 · 5456 阅读 · 1 评论 -
Unity坐标——Unity中各种坐标的详解 MousePosition RectTransform.AnchoredPostion Position LocalPosition之间的解释
在学习Unity的过程中,我原先一直只关注 WorldPositon 、 LocalPosition。即世界坐标和本地坐标。一个是世界的绝对坐标,一个是相对父对象的相对坐标。但是现在我也要开始注意第三种坐标,叫做屏幕坐标。屏幕坐标就是在屏幕上表现的坐标。如果是一个1920*1080的屏幕,那么他的左下角就是(0,0) 右上角就是(1920,1080)。在代码中,Input.MousePos...原创 2019-01-30 12:51:38 · 7432 阅读 · 1 评论 -
Unity 后台自动编译 UnityCompileInBackground
https://github.com/baba-s/unity-compile-in-background原创 2019-02-07 17:57:15 · 1300 阅读 · 0 评论 -
Unity Camera组件属性的讲解
文章转载自:https://blog.youkuaiyun.com/lyh916/article/details/44537165 Projection(投射):Perspective(透视):以3D方式观察物体Orthographic(正交):以2D方式观察物体 Culling Mask(剔除遮罩):当前Camera可以看到什么层 Depth(深度):Camera的渲染次...转载 2019-02-07 11:21:15 · 1799 阅读 · 0 评论 -
Unity Quad、Plane、Sphere、Cube基本物体的创建primitive object
使用Gameobject.createPrimitive(primitivetype.quad)来创建原创 2019-01-21 22:36:51 · 6527 阅读 · 0 评论 -
C# String 的分割读取
[Name:RemAge:12]txt文件内容如上,注意要保存成utf-8格式下面看如何用代码将Name和Age解析出来。(这里的格式就是Key value格式。)public class TextParse:MonoBehaviour{private void Awake() { ReadText("GalgameText");...原创 2019-01-10 09:43:00 · 2065 阅读 · 0 评论 -
Unity Editor 编辑器拓展 0
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;namespace Core{ public enum CreatorType { T, N, DPS } public cl...原创 2019-01-09 22:18:07 · 175 阅读 · 0 评论 -
Unity Button AddListener() 来添加click事件
button的组件里面有一个方法OnClick. AddListener这个方法来监听点击事件原创 2019-01-06 20:54:05 · 15434 阅读 · 1 评论 -
C#匿名方法 匿名函数 匿名委托
C#的匿名方法就是这个方法你不知道这个方法的名字,它的调用方式是通过委托(方法的封装)来调用,所以创建也是通过委托来创建,可以形象的理解为封装到了委托中。public class test:MonoBehaviour{ delegate void PrintMyNameHandler(string name); PrintMyNameHandler printMyName ...原创 2018-12-22 15:47:56 · 511 阅读 · 0 评论 -
Unity Coroutine 协程 (一)
首先,C#里function我们在调用的时候,是会在一帧中全部执行完。所以如果一个方法类似于这样private void ScaleChangeFx() { float timeStart = Time.time; while (Mathf.Abs(Time.time-timeStart) <= scaleRecoverIntervalT...原创 2018-12-21 14:42:02 · 256 阅读 · 1 评论 -
Unity 之 协程 初级
协程可以通过StartCoroutine()来调用只需要在里面穿进去一个IEnumerator类型的方法 就可以了。这个方法是可以带有参数的哦。举个例子IEnumerator Test2() { Debug.Log("Test211111111111111111111111111111111111"); yield re...原创 2018-09-29 18:20:44 · 189 阅读 · 0 评论 -
Unity光照之GI(Global Illumination)
GI:全域光照它是一种反射作用的光照,当Directional Light 无法直接照射到物体的时候,开启GI 可以在通过其他物体反射的光将需要光的物体照亮。注意要在Light设置中开启。并且这个是需要烘焙的。Directional Map:这个光照贴图的作用是给以后的Shader法线贴图的计算用的。普通时用不到这个功能。 在Material 材质球中:Albedo:白化...原创 2018-09-28 18:51:38 · 1115 阅读 · 0 评论 -
Unity中UGUI的Screen-Space - Camera模式的设置
首先是Canvas的设置然后是Camera的设置注意删掉Audio Listener关键:相机的Z轴坐标调到-60这个就是Unity中简单的双相机的使用。现在就两个相机,一个拍摄游戏内容,一个只拍摄UI。但是我们两个相机的拍摄的画面都想要呈现在屏幕中,所有每个相机的渲染就会有一个层次。游戏相机的depth是-1,UI相机的depth是0。所有游戏相机先渲染,在他的画面之上再...原创 2018-10-01 08:35:20 · 10297 阅读 · 1 评论 -
Unity UGUI的分辨率适配问题——我的最佳设置
在使用UGUI时,我首先设置Canvas,设置如下然后每个窗口的锚点和缩放设置成这样即可以横向拉伸 这样设置就OK了经过我的测试,可以适应16:9, 21:9, 800:600, 5:4, 3:2。...原创 2018-10-01 08:19:51 · 4196 阅读 · 2 评论 -
Unity Tilemap 初级讲解 2017版本初级版本的Tilemap
Unity2017版本中,官方给2D出了一个叫tilemap的功能。他可以方便快捷的创建2D游戏的地图。当然,这个功能也可以在3D中使用。因为2017版是tilemap功能的初版,还有很多待完善的地方,所以大致讲一下这个功能怎么使用。首先,tilemap自然是一个地图,这个地图实际上是一个网格,我们制作地图的时候,就是将不同的网格填充图片(ps:其实术语叫 tile 瓦片的意思)进去,这样...原创 2019-01-16 12:36:45 · 1389 阅读 · 0 评论