menu Dark's Blog
【Unity】关于射击扩散的几种办法
2021-02-14 |0 条评论
建议阅读缩放比例:150%前言在多数射击游戏中,子弹的弹道通常不是固定的,而是在一个区域范围内变化的,有固定弹道变化,如 CS:GO,也有随机的弹道变化,本文主要讲解如何制作随机的弹道。制作随机...
message
2021-01-30 18:08:00

Run

Run 是直接在主线程上执行的,这个没什么需要解释的

Schedule 和 ScheduleParallel的区别

Schedule 和 ScheduleParallel 都是放在多线程上并发执行的

我目前的理解是, Schedule 是在每一个 Foreach 后生成一个 Job
而 ScheduleParallel 划分 Job 是根据 Chunk 生成的,Chunk 是按 EntityArchetype 分配的
当一个  Chunk 的空间满了后,会再生成一个 Chunk,而这每一个 Chunk 都会成为一个 Job

所以从执行效率来看,ScheduleParallel 的大多数情况应该是优于 Schedule 的
而当我们只有一个 Chunk 的时候,Schedule 和 ScheduleParallel 的效果应该是一样的

message
2021-01-21 21:13:00

使用 Convert To Entity 组件

这个可能是最简单方便的办法了,在场景中找到想要转换的 GameObject ,挂载 Convert To Entity 就可以进行转换了

需要提的一点是,这个组件有两种 Conversion Mode

Convert  And Destroy转换后 删除 原有 GameObject
Convert And Inject GameObject转换后 保留 原有 GameObject

使用 EntityManager 创建实体

这个应该是最常用的办法了,生成的Entity会生成在和 EntityManager 相同的 World 中

EntityManager.CreateEntity( )可以什么参数都不填,生成一个空的 Entity
EntityManager.CreateEntity(params ComponentType[])填入不定项个 ComponentType,可以直接生成带有这个 Component的Entity
EntityManager.CreateEntity(EntityArchetype)利用原型 Archetype 来生成 Entity
EntityManager.Instantiate(Entity)克隆一个现有的 Entity

创建一个Spawner来生成实体

我们可以创建一个用来生成的类 Spawner ,继承 MonoBehaviour ,并实现 IDeclareReferencedPrefabs ,  IConvertGameObjectToEntity 接口

这个时候需要我们去实现接口中的两个方法,其中DeclareReferencedPrefabs的操作是referencedPrefabs.Add(Prefab)
这个Prefab是我们外部加载的GameObject,这个方法会在场景中生成一个Entity类型的一个Prefab

之后我们来实现Convert这个方法
首先我们来创建一个ComponentData,我们要确保这个里面包含Entity字段,并在Convert这个方法里使用conversionSystem.GetPrimaryEntity()将这个 Prefab 转化为 Entity 加载进去

最后我们使用dstManager.AddComponentData()方法,将这个ComponentData挂载到我们之前创建好的Entity当中

此时,我们就可以利用这个Entity来创建我们外部加载的Prefab了~

【Unity】优化 —— 统一资源管理器
2021-01-15 |0 条评论
建议阅读缩放比例:150%本文技术推荐与对象池一起使用 优化—— 关于对象池为什么需要统一资源管理在之前的对象池中,我们经常需要做大量重复的动态获取,每次生成都要去 Resources.Load...
【Unity】优化 —— 关于对象池
2021-01-11 |0 条评论
建议阅读缩放比例:150%对象池是什么? 很明显,就是一个用来装对象的大池子,通常我们称拥有这种池子的人为海王(不是)在游戏运行中,经常会出现大量重复的物体,我们需要不断的去生成和删除这些对象,...
【Unity】浅谈如何利用有限状态机(FSM)设计角色动画状态
2020-08-18 |0 条评论
建议阅读缩放比例:150%什么是有限状态机(Finite-state machine)在有限个状态和有限的条件下,程序只会处于一个状态之下。通过条件的触发,使得程序从一个状态切换到对应条件触发的...
【Unity】ARPG的人物移动——那些我们游玩时不曾注意的细节
2020-08-10 |0 条评论
建议阅读缩放比例:150%前言嘿!看到这里的你,请你现在回想一下,你在玩旷野之息、鬼泣、怪猎、战神、黑魂、巫师这些ARPG时,你是如何操作你的角色移动的,我没有在开玩笑啊,请你认真的回想一下。如...
【Unity】如何检测角色附近的物品——关于拾取眼前物品的解决办法
2020-08-08 |0 条评论
效果需求现在的情况是这样的,要设计我们的角色拾取物品的功能目前有以下两点问题需要解决获取角色身边的对象信息判断是否为物品,并且是否在可拾取角度内获取角色附近物体的信息有很多方法可以解决,可以使用...
message
2020-08-06 10:56:00
  • 两者的生命周期不同,如图,FixedUpdate会更先执行
  • Update每个渲染帧间隔是不相等的,而Fixedupdate在每个渲染帧的时间间隔是相等的。
  • Update的执行受场景GameObject的渲染的影响,三角形的数量越多,渲染所需要的时间也就越长。
  • FixedUpdate处于Physics中,不受这些渲染的影响,所以物理属性的更新操作更适合放在FxiedUpdate中操作。生命周期.png
【Unity】怪物视觉的实现方法
2020-07-12 |0 条评论
问题如何判定玩家在怪物可见角度位置如何判定玩家在怪物可见距离当有障碍物遮挡时如何解决解决思路角度位置用怪物的前方向与看向玩家的角度大小判断可见距离可以用Vector3.Distance方法解决,...
加载中... 世界之底
加载更多