自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 ILRuntime 热更新

ILRuntime是什么经验汇总主工程的代码,如果只是在ILRuntime热更工程中使用的话,在IL2CPP时,会被优化掉(认为没有被调用过),可以在相关代码上加上[Preverse]修饰来解决打正式包时,在工程的宏定义里加入ILRUNTIME_DEBUG_DISABLE,禁止ILRuntime收集调试信息,会提升运行效率调试时,提示“Cannot connect to ILRuntim...

2019-12-14 15:38:03 632

原创 Unity Entity Component System 翻译文档目录

Core ECS 核心概念Entities 实体Components 组件System 系统Accessing entity dataUsing IJobForEachUsing IJobChunkUsing Component​System and For​EachManual iterationEntiy QueryComponent WriteGroupsVersi...

2019-12-14 10:57:47 485

原创 脚本 1 生命周期及执行顺序

生命周期作为一个 Unity 开发者,脚本是贯穿我们的开发过程,所以脚本生命周期,一定要理解,记牢,如下图:执行顺序游戏项目需要用到很多脚本,有时我们希望挂在 GameObject 上的脚本,按照我们希望的顺序初始化和执行,这是可以的:在 ProjectSettings/Script Execution Order 菜单栏中,可以配置执行顺序。脚本优化上面的脚本生命周期中的每个事件,...

2019-12-31 23:13:26 414

原创 拓展编辑器 11 - 自定义脚本模板

项目中,我们可能定义了代码框架,很多代码文件使用的是同样的模板,每次创建代码,把相同的代码敲一遍,或者从其它文件赋值,都是件麻烦的事。解决这个问题,我们可以自定义模板文件,并添加创建菜单,这样可以像 MonoBehaviour 一样方便地创建我们自己的模板格式的代码文件。基本思想:创建模板文件,放在 Assets/Editor/ScriptTemplates/ 目录下,并对模板文本定义替换...

2019-12-31 22:42:22 152

原创 拓展编辑器 10 - 自定义资源导入

unity为我们提供了自定义资源导入的流程,通过该流程,我们可以对导入的资源进行检查,及预处理,比如检查贴图是否是2的n次幂,设置贴图参数,创建预制等对unity无法识别的资源,加入导入流程方法:派生 ScriptedImporter,并实现 OnImportAsset() 方法。例子using UnityEngine;using UnityEditor;using UnityE...

2019-12-28 19:28:56 288

原创 拓展编辑器 9 - 查找静态引用的资源(预制)

游戏运行过程中,由于逻辑过于复杂,可能会有资源被静态变量引用,无法释放,我们需要找到静态引用资源的变量,来定位问题。基本原理时,获取我们的脚本的 dll (Assembly-CSharp) 的所有类型,找到所有的静态变量成员,如果成员是UnityEngine.Object 类型,收集依赖数据,最后将该静态变量以用的资源打印出来静态引用脚本代码,将该脚本添加到GameObject ,可以测试检查...

2019-12-28 19:21:51 117

原创 拓展编辑器 8 - PreviewView

Inspector 窗口下方的 preview 窗口也可以扩展,绘制自己的 GUI。方法:继承 ObjectPreview,并声明 [CustomPreview(typeof(GameObject))]。using UnityEngine;using UnityEditor;/// <summary>/// 扩展选中对象后的预览窗口/// </summary&gt...

2019-12-28 19:07:40 287 1

原创 拓展编辑器 7 - 自定义窗口 EditorWindow

开发者可以通过派生 EditorWindows 绘制完全自定义的窗口。使用 EditorWindow.GetWindow()来打开窗口,在OnGUI中进行绘制。通过实现 IHasCustomMenu 来添加菜单例子:using UnityEngine;using UnityEditor;/// <summary>/// 自定义窗口/// </summary&gt...

2019-12-28 18:57:07 415

原创 拓展编辑器 6 - GameView

Game 视图也可以扩展,主要是可以指定 [ExeuteInEditMode] 来指定在非运行时调用这个比较简单,直接贴个代码吧using UnityEngine;[ExecuteInEditMode] // 之时编辑模式下也执行public class GameViewExtend : MonoBehaviour{#if UNITY_EDITOR private void...

2019-12-28 18:19:27 232

原创 拓展编辑器 5 - SceneView

关键概念void MonoBehaviour.OnDrawGizmosSelected() : 为选中的,当前类型的 MonoBehaviour 绘制辅助元素。void MonoBehaviour.OnDrawGizmos() : 为所有的当前类型的 MonoBehaviour 绘制辅助元素。Gizmos : 绘制接口Gizmos.color : 指定绘制颜色Gizmos.DrawC...

2019-12-28 18:13:23 655

原创 拓展编辑器 4 - InspectorWindow

关键概念[CustomEditor typeof(ComponentType)]: 修饰,指定派生自Editor 的类为 ComponentType 类型的编辑器控制类。Editor : 派生改类,为 object 实现自定义的 Inspector 或 editor 界面。Editor.OnInspectorGUI : 覆写 Inspector 绘制GUILayout.Button : ...

2019-12-28 17:17:42 257

原创 拓展编辑器 3 - HierarchyWindow

关键概念[MenuItem(“GameObject/XXX”)] : 创建左上角的 Create 菜单项。如果跟已有的路径相同,将覆盖已有功能。EditorApplication.hierarchyWindowItemOnGUI : 委托,处理 hierarchy 窗口对象的绘制。签名:void OnGUI(int instanceID, Rect selectionRect)。int ...

2019-12-28 16:48:15 191

原创 拓展编辑器 2 - ProjectWindow

扩展鼠标选中的资源项关键概念:[InitializeOnLoadMethod] : 该修饰告诉 Unity ,被修饰的方法在脚本编译完后首先调用。必须时静态方法。MenuItem(“Asset/XXX”) : 右键菜单。[MenuItem(“Asset/Create/XXX”)] : 右键菜单,以及在窗口左上角的 Create菜单显示。EditorApplication....

2019-12-28 16:18:27 489

原创 拓展编辑器 1 - 菜单 MenuItem

菜单 MenuItem官方文档连接MenuItem修饰可以让我们对菜单进行扩展,同时,该修饰只能用在静态方法上。格式:public MenuItem(string itemName, bool isValidateFunction, int priority)参数含义:itemName:菜单路径,以 “/” 分隔。如"Window/MyFunc",表示将菜单添加到 Window 下...

2019-12-28 11:20:16 225

翻译 Unity Entity Component System --- TransformSystem

Section 1: Non-hierarchical Transforms(Basic)LocalToWorld(float4X4)表示从本地到世界空间的变换。这是一种经典的表示方式,也是系统中唯一用来访问本地空间的组件。一些DOTS特性,只有存在LocalToWorld时才能执行。例如,RenderMesh组件依赖LocalToWorld来渲染实例。如果只有一个LocalToWorl...

2019-12-21 17:28:22 945

翻译 Unity Entity Component System --- Creating Gameplay

Creating Gameplay该部分讨论用Unity编辑器创作基于DOTS的游戏和其它应用,以及如何利用ECS提供的system和components来实现你游戏。Systems包括:Unity.Transforms — 提供定义世界空间方位的组件,3D对象层次,以及管理它们的系统。Unity.Hybrid.Renderer — 提供在运行时渲染ECS 实体的系统和组件。Auth...

2019-12-21 17:26:33 382

原创 uGUI备忘

ContentSizeFitter:该组件可以帮我们在空间内容发生变化导致空间尺寸改变时,重新计算RectTransform。但在复杂的UI应用中,可能我们给文本赋值后,没有正确地计算RectTransform,那么我们需要手动触发计算:ContentSizeFitter csf;csf.enable = false;csf.enable = true;如果这时空间本身地active...

2019-12-21 17:24:24 332

原创 Unity Audio 系统

游戏加入声音后,会大大的增强沉浸感,提高游戏体验,unity提供了强大的声音组件来帮助播放音效,即AudioSystem使用Audio的最简单的例子将音效文件导入unity工程在场景中创建一个GameObject在Project中找到导入的音效文件,直接拖动到上面创建的GameObject上再创建一个Game Object,添加AudioListener组件来“听”场景中的声音运行例...

2019-12-14 18:07:53 3268 1

原创 UGUI Grid VerticalLayout HorizentalLayout经验

列表元素创建出来,但是无法滚动:Grid未加ContentSizeFitter组件,该组件用于动态计算Grid的Rect尺寸列表元素尺寸可变时,比如VerticalLayout元素,有的高,有的矮,会有尺寸计算错误的情况在创建完成后,取出ContentSizeFitter组件,设置enable=false,再enable=true,触发重新计算Rect元素上有多个子控件,且可见性不确定,...

2019-12-14 16:03:51 148

翻译 Unity Entity Component System --- System Update Order

通过Component System Groups来指定systems的执行顺序。可以通过在系统的类的定义上使用[UpdateInGroup] Attribute来指定该系统在哪个group中执行。还可以使用[UpdateBefore] [UpdateAfter]来指定在该Group内的执行顺序。ECS框架创建了一组默认的system groups,可以利用这些groups来控制我们的系统的执行...

2019-12-14 15:00:53 454

翻译 Unity Entity Component System --- Entity Command Buffer

EntityCommandBuffer解决了2个问题:当你再Job中时,不可以访问EntityManager当访问EntityManager时(比如,创建一个Entity)导致导致访问的Components数组失效,及EntityQuery对象失效。Entity Command Buffer抽象允许我们将改变保存到队列(从Job或者主线程),然后在稍后在主线程中应用。有2中应用EntityC...

2019-12-14 14:47:13 370

翻译 Unity Entity Component System --- JobComponentSystem

Automatic job dependency management自动管理Job依赖。管理Job的依赖是件很麻烦的事。而JobComponentSystem帮我们自动处理了。规则很简单:不同系统的Jobs可以并行地访问同样类型的IComponentData。但是如果有一个Job在向该数据写操作,则这些Jobs不能并行执行,必须根据依赖调度Jobs。public class Rotatio...

2019-12-14 14:44:34 568

翻译 Unity Entity Component System -- Component Systems

Component System 执行entities的逻辑。它不能包含数据。可以看作老版本的Component,只是它只有方法,没有数据。一个Component System负责更新所有的匹配的entities(由EntityQuery进行匹配)。ComponentSystem是个纯虚类,通过实现相关接口执行我们的逻辑。...

2019-12-14 14:41:02 196

翻译 Unity Entity Component System --- System 系统

SystemsSystem在ECS中执行逻辑,将component data从一个状态变换到下个状态,比如一个系统,可以对所有移动实体执行运算,根据其方向,速度,时间计算新的位置。ECS支持多种不同的systems,你可以实现ComponentSystem和JobComponentSystem来为entities执行逻辑。这两种Systems可以容易地选择和遍历拥有指定components的e...

2019-12-14 14:38:44 438

翻译 Unity Entity Component System --- Components

Component用来表示你的数据。Entity只是一个标识,用来将Component收集到一起。System提供行为。实际上,Component是个struct结构体,这些结构体继承以下接口:IComponentData – 用于general purpose 及 chunk components。IBufferElementData – 用于为Entity创建dynamic buffer数...

2019-12-14 14:35:31 216

翻译 Unity Entity Component System --- Chunk Components

Chunk component data可以使用chunk components将特定的chunk(内的entities)和data关联起来。Chunk components包含的数据,将应用到指定chunk中的所有entities上。例如,如果有一些表示3D对象的entities(它们在一个或者及个chunk里),你可以将它们的bounding box,存储到一个chunk componen...

2019-12-14 14:26:22 416

翻译 Unity Entity Component System --- Dynamic Buffer Components

Dynamic BuffersDynamicBuffer是一种支持可变大小的弹性buffer component data,可以存放一定数量的元素数据。如果空间不足会分配堆内存块来扩充。该方法的内存管理是自动的。DynamicBuffer的内存是由EntityManager管理的,所以当DynamicBuffer component删除时,其内存也会被释放。Fixed Array 固定长度数...

2019-12-14 13:48:49 844

翻译 Unity Entity Component System --- System State Components

SystemStateComponentData的作用,是跟踪资源在系统内部的状态,以提供机会在适当的时机创建和销毁资源,而不是依靠某个回调函数。SystemStateComponentData和SystemStateSharedComponentData跟ComponentData以及SharedComponentData一样,各自都有一个重要的概念:SystemStateComponent...

2019-12-14 13:41:10 564

翻译 Unity Entity Component System --- Shared Component Data

Shared components 是一种特殊的数据组件,可以根据shared componet的不同数值,来将entities进一步细分。当将一个shared component添加到一个entity,Entity Manager会将所有共享该shared component(值相同,则是一个),存储到一个Chunk。Shared components允许你的系统一起处理处理相似的entitie...

2019-12-14 13:18:17 1214

翻译 Unity Entity Component System --- General Purpose Components 组件

Unity中的ComponentData(ECS中的component)对象,是个仅存储一个Entity数据的结构体。ComponentData不能包含方法,除了访问数据的函数。所有的游戏逻辑都应该在System中实现。这相当于是老的Unity中的Component,只是只包含变量。ECS提供了 IComponentData,可以实现该接口。IComponentData传统的Unity co...

2019-12-14 13:14:16 194

原创 Unity Entity Component System 3 --- Worlds

Worlds一个World(世界)包含一个Entity Manger和一系列的ComponentSystems,可以在该World中创建需要的对象。通常建议建立2个World,一个是模拟(逻辑)World,和一个渲染World。游戏执行时,ECS默认会创建一个World,并创建所有的有效的ComponentSystem。也可以禁止自动创建World,而根据你自己的代码配置创建你的World。...

2019-12-14 13:07:08 314

原创 UGUI-RectTransform的位置研究

在进行使用UGUI进行时,经常会遇到需要在代码中控制UI的位置的情况。比如,在背包内的图标的位置,显示个tips,可以直接在图标节点创建子节点来显示,但是在滚动视口的边缘时,mask会将tips裁剪掉,而且,我们可能希望设计一个全局的管理器,来创建和显示tips。所以,我们需要根据已知的UI的位置,计算出它在别的UI上的位置(保持屏幕位置相同)。理论上讲,控件的位置,是基于父控件位置的偏移,...

2019-12-06 18:23:42 626

GPU gems.1.chm

nvidia 图形编程书籍,技巧,方法,原理

2011-02-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除