<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[放小孩的羊的博客]]></title><description><![CDATA[只放一只小孩的羊...]]></description><link>https://blog.youkuaiyun.com/u010020342</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010020342]]></copyright><item><title><![CDATA[Unity实现APK覆盖安装]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/126797176</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/126797176</guid><author>u010020342</author><pubDate>Sat, 10 Sep 2022 16:17:06 +0800</pubDate><description><![CDATA[程序启动时对比Apk版本并下载新版本Apk文件存储到本地，然后调用Android弹出安装Apk界面。]]></description><category></category></item><item><title><![CDATA[Unity实现SVN的提交、更新、清理工具]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/126796686</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/126796686</guid><author>u010020342</author><pubDate>Sat, 10 Sep 2022 15:27:13 +0800</pubDate><description><![CDATA[Unity编辑器直接执行SVN的提交、更新操作]]></description><category></category></item><item><title><![CDATA[Unity 利用 InitializeOnLoad 属性实现UnityEditor启动自动执行]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/126796070</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/126796070</guid><author>u010020342</author><pubDate>Sat, 10 Sep 2022 15:04:41 +0800</pubDate><description><![CDATA[允许在和初始化 Editor 类。重新编译项目中的脚本时，会调用带有此属性的静态构造函数。在 Unity 首次加载项目时、在 Unity 检测到脚本修改时，以及当进入运行模式时，会进行此调用。]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——Jenny代码生成器(序章)]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/120105767</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/120105767</guid><author>u010020342</author><pubDate>Sat, 04 Sep 2021 22:04:27 +0800</pubDate><description><![CDATA[前(fei)言(hua)
使用Entitas集成的代码生成器时如果代码有报错需要先把报错处理掉。如果我们是想删除某个Component或者修改Component中数据类型时就很麻烦。使用Jenny代码生成器时则不用理会这些，直接删除某个Component然后重新生成就行。
获取Jenny
AssetStore导入Entitas时会带有Jenny的压缩包，如图：

只需要将Jenny.zip解压到Assets同级目录即可。

配置Jenny
生成Jenny.properties
找到Jenny/Jenny/J]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——Attributes（十一）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898879</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898879</guid><author>u010020342</author><pubDate>Sun, 22 Nov 2020 09:03:39 +0800</pubDate><description><![CDATA[Attributes
Entitas提供了各种属性在生成代码时提供特殊功能。
代码生成器支持以下与类，接口和结构一起使用的属性：
[Context]
将组件添加到指定的Context,如果没有指定则会添加到默认Context中（Jenny 设置面板中定义的第一个Context）。
例：
    [Game]
    public class ViewComponent : IComponent
    {
        public GameObject gameObject;
    }

将View组]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——ITearDownSystem（十）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898853</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898853</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:32:08 +0800</pubDate><description><![CDATA[通过前面几个章节已经讲解了System的其他几种类型并且实现一个小示例。但是Entitas还有一种System类型没有讲到，这里来完成我们示例的最后一步，程序结束运行时在控制台输出一个"Game Over!"。
ITearDownSystem
ITearDownSystem在程序结束运行时运行一次TearDown()接口，可以在这个接口中执行一些数据保存，断开网络等操作。可以参考MonoBehaviour生命周期中的OnDestroy()。
MyTearDownSystem.cs       ITearDo]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——ICleanupSystem（九）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898836</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898836</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:31:35 +0800</pubDate><description><![CDATA[这一章开始实现案例最后一个功能，实时打印小熊的位置信息。可能你会问打印位置信息和Entitas有什么关系，一句Debug.Log()不就完事了，是的!如果是在Unity环境下是这样一句话就行了，但是Entitas的开发环境是不依赖于Untiy的，这样的好处是如果有服务器和客户端公用一套战斗逻辑的时候，Entitas从客户端移植到服务器就会很方便，但是因为刚才在代码中插入了Debug.Log()导致需要修改源码或者服务器引入UnityEngine.dll。
ICleanupSystem
这个系统主要是在每帧的]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——IExecuteSystem（八）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898818</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898818</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:31:04 +0800</pubDate><description><![CDATA[这一章主要是通过IExecuteSystem让我们的小熊动起来了。我们还是先介绍一下IExecuteSystem系统。
IExecuteSystem
这个系统也比较简单，和IInitializeSystem很相似，区别就是IInitializeSystem是游戏开始时执行一次Initialize()方法，IExecuteSystem时每帧执行一次Execute()方法。类似与MonoBehaviour生命周期中的Update()方法。
ArrowStateComponent.cs
这里我们主要是想收集键盘的]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——ReactiveSystem＜Entity＞（七）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898785</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898785</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:30:36 +0800</pubDate><description><![CDATA[在上一章已经可以通过IInitializeSystem系统在游戏中创建我们的实体了，但是还不能在Game视图看到任何东西。这一张我们通过ReactiveSystem系统将Entity上组件的数据和GameObject联系起来。
ReactiveSystem
ReactiveSystem和其他System不同的是它继承类而不是实现接口。Entitas为每个Context生成Entity类型，例如GameEntity,InputEntity。ReactiveSystem只对指定的Entity类型产生响应。但是同]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——IInitializeSystem（六）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898679</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898679</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:29:58 +0800</pubDate><description><![CDATA[从这章这开始我们以一个小案例分章介绍Entitas为我们提供的五种类型的System。
案例的主要功能比较简单，大致的流程如下：

在游戏启动时在屏幕上创建一个站立的小熊，
点击键盘上的左右按键时将小熊切换成一个对应方向的Sprite，朝对应方向移动并实时打印位置信息。松开左右按键时切换回站立的小熊Sprite，结束打印位置信息。
结束游戏输出一个"Game Over!"信息。

这一章我们将在游戏中通过代码创建一个小熊的GameObject,并可以看到小熊Entity的一些组件信息
案例准备
创建View]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——Matcher Collector（五）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898655</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898655</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:29:29 +0800</pubDate><description><![CDATA[图中可以看到一个Context具有多个Entity,每个Entity可能会被N个Group所关心。
Group
一个Context中可能会同时存在很多个Entity，但是有些时候我们只需要处理某些Entity，那么我们可以通过Group来快速访问，每个Context内部维护一个Group对象集合，调用GetGroup()方法可以拿到Group，相同得Matcher参数拿到得是相同得Group对象。
Group是实时更新的一个具有相同筛选条件的Entity的组合，它会自动添加具有筛选条件的Entity，并删.]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——System（四）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898636</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898636</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:28:58 +0800</pubDate><description><![CDATA[这章我们将介绍ECS的三大基本概念中的System。
System    系统
System是一个单纯得逻辑处理类，在特定得时间执行系统内部的逻辑，这些逻辑中可以改变Entity上得Component得数据和状态， 原则上来说应该是只有逻辑没有数据。
Entitas给我们提供了五种系统类型，之后我将每种类型分成一个章节结果代码实例讲解方便理解。

IInitializeSystem
IExecuteSystem
ICleanupSystem
ITearDownSystem
ReactiveSystem

一]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——Component（三）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898611</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898611</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:28:20 +0800</pubDate><description><![CDATA[这章我们将介绍ECS的三大基本概念中的Component。
Component    组件
组件是ECS框架中基础的数据结构单元。每个Compoent只有数据，不包含任何处理数据的方法。在内存中相同类型的组件是紧密排列的，这样在System中遍历拥有相同组件的实体时大大的提高内存命中率。这也是ECS框架用来做很多大型项目或者多物体的项目的原因之一。
Entitas中所有组件全部继承自IComponent接口。同时Entitas提供了各种特殊标签属性，在生成代码的时候为我们提供特殊功能。例如 [Context]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——Entity Context（二）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898547</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898547</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:27:36 +0800</pubDate><description><![CDATA[这章我们将介绍ECS的三大基本概念种的Entity，同时Entity又和Context息息相关。
Entity    实体
实体作为ECS的三大基本概念之一，实体作为组件的载体，本身并无实际意义，最核心的数据便是唯一ID，和Untiy的GameObject类似。在游戏世界中可以被创建，被销毁，可以添加组件，删除组件。
实体初始化
Entitas中的实体只能由Context的CreateEntity()方法创建。可以大概看下源码：
        //判断对象池是否有空闲对象
    if (_reusabl]]></description><category></category></item><item><title><![CDATA[我所理解的Entitas——入门（一）]]></title><link>https://blog.youkuaiyun.com/u010020342/article/details/109898326</link><guid>https://blog.youkuaiyun.com/u010020342/article/details/109898326</guid><author>u010020342</author><pubDate>Sat, 21 Nov 2020 15:21:41 +0800</pubDate><description><![CDATA[关于ECS框架
ECS框架被大家所熟知是源于2017年GDC大会上《守望先锋》针对他们关于ECS架构的做了一次技术分享，在此之前ECS框架只是并未被广泛使用和流传。和传统的OOP框架以类为基础将数据和逻辑放在类中处理的方式不同，ECS是以功能为基础，遵循组合优于继承的原则将功能分开处理。这样一个游戏物品有着什么功能取决与他有什么组件，其他关于ECS和传统框架的区别或者ECS的优点可以自行百度。这里主要介绍ECS的概念以便之后理解Entitas。
在ECS中每个基本单位都是一个实体，一个实体由N个组件组成。然]]></description><category></category></item></channel></rss>