- 博客(15)
- 资源 (10)
- 收藏
- 关注
原创 Unity 利用 InitializeOnLoad 属性实现UnityEditor启动自动执行
允许在和初始化 Editor 类。重新编译项目中的脚本时,会调用带有此属性的静态构造函数。在 Unity 首次加载项目时、在 Unity 检测到脚本修改时,以及当进入运行模式时,会进行此调用。
2022-09-10 15:04:41
3037
1
原创 我所理解的Entitas——Jenny代码生成器(序章)
前(fei)言(hua)使用Entitas集成的代码生成器时如果代码有报错需要先把报错处理掉。如果我们是想删除某个Component或者修改Component中数据类型时就很麻烦。使用Jenny代码生成器时则不用理会这些,直接删除某个Component然后重新生成就行。获取JennyAssetStore导入Entitas时会带有Jenny的压缩包,如图:只需要将Jenny.zip解压到Assets同级目录即可。配置Jenny生成Jenny.properties找到Jenny/Jenny/J
2021-09-04 22:04:27
1281
1
原创 我所理解的Entitas——Attributes(十一)
AttributesEntitas提供了各种属性在生成代码时提供特殊功能。代码生成器支持以下与类,接口和结构一起使用的属性:[Context]将组件添加到指定的Context,如果没有指定则会添加到默认Context中(Jenny 设置面板中定义的第一个Context)。例: [Game] public class ViewComponent : IComponent { public GameObject gameObject; }将View组
2020-11-22 09:03:39
961
原创 我所理解的Entitas——ITearDownSystem(十)
通过前面几个章节已经讲解了System的其他几种类型并且实现一个小示例。但是Entitas还有一种System类型没有讲到,这里来完成我们示例的最后一步,程序结束运行时在控制台输出一个"Game Over!"。ITearDownSystemITearDownSystem在程序结束运行时运行一次TearDown()接口,可以在这个接口中执行一些数据保存,断开网络等操作。可以参考MonoBehaviour生命周期中的OnDestroy()。MyTearDownSystem.cs ITearDo
2020-11-21 15:32:08
382
原创 我所理解的Entitas——ICleanupSystem(九)
这一章开始实现案例最后一个功能,实时打印小熊的位置信息。可能你会问打印位置信息和Entitas有什么关系,一句Debug.Log()不就完事了,是的!如果是在Unity环境下是这样一句话就行了,但是Entitas的开发环境是不依赖于Untiy的,这样的好处是如果有服务器和客户端公用一套战斗逻辑的时候,Entitas从客户端移植到服务器就会很方便,但是因为刚才在代码中插入了Debug.Log()导致需要修改源码或者服务器引入UnityEngine.dll。ICleanupSystem这个系统主要是在每帧的
2020-11-21 15:31:35
555
1
原创 我所理解的Entitas——IExecuteSystem(八)
这一章主要是通过IExecuteSystem让我们的小熊动起来了。我们还是先介绍一下IExecuteSystem系统。IExecuteSystem这个系统也比较简单,和IInitializeSystem很相似,区别就是IInitializeSystem是游戏开始时执行一次Initialize()方法,IExecuteSystem时每帧执行一次Execute()方法。类似与MonoBehaviour生命周期中的Update()方法。ArrowStateComponent.cs这里我们主要是想收集键盘的
2020-11-21 15:31:04
580
2
原创 我所理解的Entitas——ReactiveSystem<Entity>(七)
在上一章已经可以通过IInitializeSystem系统在游戏中创建我们的实体了,但是还不能在Game视图看到任何东西。这一张我们通过ReactiveSystem系统将Entity上组件的数据和GameObject联系起来。ReactiveSystemReactiveSystem和其他System不同的是它继承类而不是实现接口。Entitas为每个Context生成Entity类型,例如GameEntity,InputEntity。ReactiveSystem只对指定的Entity类型产生响应。但是同
2020-11-21 15:30:36
986
3
原创 我所理解的Entitas——IInitializeSystem(六)
从这章这开始我们以一个小案例分章介绍Entitas为我们提供的五种类型的System。案例的主要功能比较简单,大致的流程如下:在游戏启动时在屏幕上创建一个站立的小熊,点击键盘上的左右按键时将小熊切换成一个对应方向的Sprite,朝对应方向移动并实时打印位置信息。松开左右按键时切换回站立的小熊Sprite,结束打印位置信息。结束游戏输出一个"Game Over!"信息。这一章我们将在游戏中通过代码创建一个小熊的GameObject,并可以看到小熊Entity的一些组件信息案例准备创建View
2020-11-21 15:29:58
587
原创 我所理解的Entitas——Matcher Collector(五)
图中可以看到一个Context具有多个Entity,每个Entity可能会被N个Group所关心。Group一个Context中可能会同时存在很多个Entity,但是有些时候我们只需要处理某些Entity,那么我们可以通过Group来快速访问,每个Context内部维护一个Group对象集合,调用GetGroup()方法可以拿到Group,相同得Matcher参数拿到得是相同得Group对象。Group是实时更新的一个具有相同筛选条件的Entity的组合,它会自动添加具有筛选条件的Entity,并删.
2020-11-21 15:29:29
650
原创 我所理解的Entitas——System(四)
这章我们将介绍ECS的三大基本概念中的System。System 系统System是一个单纯得逻辑处理类,在特定得时间执行系统内部的逻辑,这些逻辑中可以改变Entity上得Component得数据和状态, 原则上来说应该是只有逻辑没有数据。Entitas给我们提供了五种系统类型,之后我将每种类型分成一个章节结果代码实例讲解方便理解。IInitializeSystemIExecuteSystemICleanupSystemITearDownSystemReactiveSystem一
2020-11-21 15:28:58
630
原创 我所理解的Entitas——Component(三)
这章我们将介绍ECS的三大基本概念中的Component。Component 组件组件是ECS框架中基础的数据结构单元。每个Compoent只有数据,不包含任何处理数据的方法。在内存中相同类型的组件是紧密排列的,这样在System中遍历拥有相同组件的实体时大大的提高内存命中率。这也是ECS框架用来做很多大型项目或者多物体的项目的原因之一。Entitas中所有组件全部继承自IComponent接口。同时Entitas提供了各种特殊标签属性,在生成代码的时候为我们提供特殊功能。例如 [Context
2020-11-21 15:28:20
703
原创 我所理解的Entitas——Entity Context(二)
这章我们将介绍ECS的三大基本概念种的Entity,同时Entity又和Context息息相关。Entity 实体实体作为ECS的三大基本概念之一,实体作为组件的载体,本身并无实际意义,最核心的数据便是唯一ID,和Untiy的GameObject类似。在游戏世界中可以被创建,被销毁,可以添加组件,删除组件。实体初始化Entitas中的实体只能由Context的CreateEntity()方法创建。可以大概看下源码: //判断对象池是否有空闲对象 if (_reusabl
2020-11-21 15:27:36
901
原创 我所理解的Entitas——入门(一)
关于ECS框架ECS框架被大家所熟知是源于2017年GDC大会上《守望先锋》针对他们关于ECS架构的做了一次技术分享,在此之前ECS框架只是并未被广泛使用和流传。和传统的OOP框架以类为基础将数据和逻辑放在类中处理的方式不同,ECS是以功能为基础,遵循组合优于继承的原则将功能分开处理。这样一个游戏物品有着什么功能取决与他有什么组件,其他关于ECS和传统框架的区别或者ECS的优点可以自行百度。这里主要介绍ECS的概念以便之后理解Entitas。在ECS中每个基本单位都是一个实体,一个实体由N个组件组成。然
2020-11-21 15:21:41
2313
Unity 提供了全面的基于物理的车辆模拟解决方案 NWHVehiclePhysics2
2024-01-28
Unity GPU Instancer.unitypackage
2021-11-20
Unity Gaia Pro.unitypackage
2021-11-20
Unity 水插件 AQUAS WaterRiver Set.unitypackage
2021-11-20
CiDy 2 2.7.2.unitypackage
2021-11-20
Easy Save3.3.1.unitypackage
2021-05-10
Doozy_3.0.unitypackage
2020-11-16
TextMesh Pro.unitypackage
2020-11-16
PhysicsEditor v1.0.10 破解版
2016-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人