Unity拖动2D和3D物体
/* 首先说一下,Input.mousePosition是鼠标所在像素平面内的坐标,需要根据自己的需求转变成世界坐标。 Description 描述 The current mouse position in pixel coordinates. (Read Only) 在屏幕坐标空间当前鼠标的位置(只读)。 The bottom-left of the screen or window is at (0, 0). The top-right of the screen or window is at (Screen.width, Screen.height). 屏幕或窗口的左下角是坐标系的(0,0)坐标。右上角的坐标是(屏幕宽度值,屏幕高度值)。 */ 123456789101112131415161718192021222324252627//这里用于2D场景物体的移动,可以参考一下。private bool isMouseDown;private Vector3 lastMousePosition = Vector3.zero;private void TwoDMove()...
AssetBundle热更新完整工作流与知识点解析
前言 虽然这一块内容是比较基础的,但是知识点比较分散,所以我还是决定写一篇博客来记录梳理一下。 环境:Unity 2018.4.0 参考文献 Unity官方文档:https://docs.unity3d.com/Manual/index.html 不会C++的码农知乎文章:https://zhuanlan.zhihu.com/p/25111851 AssetBundle相关知识 什么是AssetBundle? 一个AssetBundle可以当做一个文件集合,它包含了Unity可以在运行时加载的特定于平台的非代码资产(例如模型、纹理、预制组件、音频,甚至整个场景)。AssetBundle可以表示彼此之间的依赖关系;例如,一个AssetBundle中的material可以引用另一个AssetBundle中的texture。为了在减轻网络传输压力,您可以根据需求选择内置算法(LZMA和LZ4)来压缩AssetBundle。 AssetBundle对于可下载内容(DLC)、减少初始安装大小、加载针对最终用户平台优化的资产以及减少运行时内存压力都很有用。 AssetBundle里有什么? ...
Unity DOTS:ECS的核心部分
ECS的概念 实体组件系统(ECS)架构将身份(Entities,实体),数据(Components,组件)和行为(Systems,系统)分开。该架构专注于数据。Systems读取Components数据流,然后将数据从输入状态转换为输出状态,然后对这些实体进行索引。 下图说明了这三个基本部分如何协同工作: 在此图中,系统读取Translation和Rotation部分,将它们相乘,然后更新相应的LocalToWorld成分(L2W = T*R)。 实体A和B具有Renderer组件,而实体C则没有,但是这不会影响系统,因为系统并不关心Renderer组件。 您可以设置一个系统,使其需要一个Renderer组件,在这种情况下,系统将忽略实体C的组件。或者,您也可以设置系统以排除具有Renderer组件的实体,然后忽略实体A和B的组件。 Archetypes(原型) 组件类型的组合称为“原型”。例如,一个3D对象可能具有一个用于其世界变换的组件,一个用于其线性运动的组件,一个用于旋转的组件和一个用于渲染的组件。这些3D对象的每个实例都对应一个实体,但是由于它们共享相同的组件集,因...
Unity DOTS:ECS拓展内容
Sync points synchronization poin(sync point)是程序执行中的一个点,它等待到目前为止已调度的所有job的完成。同步点会限制您一段时间内使用Job System中所有可用工作线程的能力。因此,通常应避免同步点。 Structural changes(结构变化) 同步点是由 您在任何其他job正在操作components时不能安全执行自己的操作所引起的。ECS中数据的结构更改是引发Sync points的主要原因。以下所有都是结构上的变化: 创建entities 删除entities 向entity添加component 从entity中删除component 更改sharedcomponent的value 广义上讲,任何更改entity archetype或导致chunk中entities顺序更改的操作都是结构性更改。这些结构更改只能在主线程上执行。 结构更改不仅需要Sync points,而且还会使对任何component数据的所有直接引用无效。这包括DynamicBuffer的实例以及提供对component(例如Component...
Unity DOTS:Components部分
组件 Components是ECS体系结构的三个主要元素之一。它们代表您的游戏或应用程序的数据。Entities是索引您的components集合的标识符,而systems提供了行为。 ECS中的Components是具有以下“标记接口”之一的结构体类型: IComponentData —用于通用和[chunk components]。 IBufferElementData —将[动态缓冲区(dynamic buffers)]与entities相关联。 ISharedComponentData —按archetype中的值对entities进行分类或分组。有关更多信息,请参见[Shared Component Data]。 ISystemStateComponentData —将特定system的状态与entity相关联,并检测何时创建或销毁单个实体。有关更多信息,请参见System State Component。 ISharedSystemStateComponentData —共享状态和System状态 数据的组合。请参阅System State Component。 B...
Unity DOTS:Entities部分
Entities Entities是实体组件系统体系结构的三个主要元素之一。它们代表游戏或应用程序中的各个“事物”。Entities既没有行为也没有数据;取而代之的是,它担任索引各种数据的职责。Systems提供行为,而Components存储数据。 entity本质上是一个ID。最简单方法是把它作为一个超轻量级GameObject甚至没有名称。实体ID稳定;您可以使用它们来存储对另一个component或entities的引用。例如,Hierarchy中的子entity可能需要引用其父entity。 一个EntityManager管理在一个World中所有的entities。EntityManager维护entities列表并组织与entities相关联的数据以实现最佳性能。 尽管实体没有类型,但是可以按与entities相关联的components的类型对其进行分组。创建entities并向其添加components时,EntityManager会持续跟踪监控entities上components的唯一组合。这种独特的组合称为Archetype(原型)。将components...
Unity DOTS:Systems部分
Systems 一个system,也就是ECS里的S,提供了将component的数据从其当前状态变换到其下一个状态的逻辑-例如,一个system可以通过velocity乘以Time.deltaime来更新所有可移动entities的位置。 Instantiating systems Unity ECS自动在您的项目中发现system类型,并在运行时实例化它们。它将每个发现的system添加到默认system groups之一中。您可以使用system attributes来指定system的父组以及该system在该group中的顺序。如果未指定父项,则Unity将以确定性的,但并未指定顺序的将system添加到默认世界的Simulation system group中。您也可以使用attribute禁用自动创建。 system的更新循环由其父ComponentSystemGroup驱动。ComponentSystemGroup本身是一种特殊的system,负责更新其child systems。group可以嵌套。system从运行的world获取time数据;time由Up...
Unity DOTS:目录
前言 本篇博客汇总个人Unity DOTS相关文章,方便好兄弟们查看 目录 Unity DOTS:入门简介:https://www.lfzxb.top/unity-dots-ecs-burst-complier-jobsystem/ Unity DOTS:ECS的核心部分:https://www.lfzxb.top/unity-dots-core-of-ecs/ Unity DOTS:拓展内容:https://www.lfzxb.top/unity-dots-extension/ Unity DOTS:Entities部分:https://www.lfzxb.top/unity-dots-part-of-entities/ Unity DOTS:Components部分:https://www.lfzxb.top/unity-dots-part-of-components/ Unity DOTS:Systems部分:https://www.lfzxb.top/unity-dots-systems/ Unity DOTS:使用ECS进行GamePlay开发:https://www....
Unity DOTS:使用ECS进行GamePlay开发
本节包含有关如何在Unity Editor中创建基于DOTS的游戏和其他应用程序的信息。它还涵盖了ECS提供的可帮助您实现游戏功能的systems和components。 该systems包括: Unity.Transforms:提供用于定义世界空间变换,3D对象层次结构以及管理它们的systems的components。 Unity.Hybrid.Renderer:提供components和systems以在Unity运行时中渲染ECS entities。 GamePlayer支持包 DOTS中的某些游戏功能需要额外的程序包来支持它们。有关需要其他软件包的功能列表,请参见下表。 Feature Packages DOTS ECS com.unity.entities Rendering com.unity.rendering.hybrid - Hybrid Renderer V2 com.unity.render-pipelines.high-definition or com.unity.render-pipelines.universal - ...
Unity Profiler学习笔记:初识Profile性能分析工具
前言 本系列笔记内容参考自官方文档 什么是Profiler Unity Profiler是一个工具,您可以使用它来获取关于应用程序的性能信息。您可以将它连接到云端的设备或连接到本机器上的设备,以测试应用程序在预期的发布平台上如何运行。您还可以在编辑器中运行它,以在开发应用程序时获得资源分配的信息。[toc] Profiler收集并显示应用程序在CPU、内存、渲染和音频等方面的性能数据。可以定位应用程序中性能需要改进的地方,你可以精确定位你的代码,资产,场景设置,相机渲染,以及Build Setting影响应用程序的性能。它以一系列图表的形式显示结果,因此您可以可视化应用程序性能的峰值发生在何处。 如何查看Profiler Window > Analysis > Profiler 包含内容 开始使用Profiler窗口 分析应用程序 CPU使用分析器模块 呈现分析器模块 内存分析器模块 音频分析器模块 物理性能分析模块 GPU分析器模块 全局光照分析器模块 UI分析器模块 开始使用Profiler窗口 Profiler布局 A:Profiler控制菜单。使用...







