除去三大功能外,NodeCanvas还有一些别的有趣的东西,能帮助我们改进3大流程。
Standalone Action List
给对线添加如上脚本后,我们可以在对象上进行一些可视化的对话构建。
自定义Action和Condition
我们可以自定义自己的节点,方便我们在3大功能上使用。
生成脚本如下:
生成的行为123456789101112131415161718192021222324252627282930313233343536373839using NodeCanvas.Framework;using ParadoxNotion.Design;namespace NodeCanvas.Tasks.Actions{ [Category("my")] [Description("输出一些内容")] public class Mylog : ActionTask{ //Use for initialization. This is called only once in the lifet ...
主要功能
基础功能都有,具备良好的扩展性。
播放对话
对话音效
分支对话
概览对话
条件对话
……
快速食用添加脚本
添加角色并给角色添加
编写对话树
启动对话树
默认是不启动对话树的,可以在代码中控制启动也可以在属性面板设置游戏开始时启动。
12345678public DialogueTreeController dialogueTreeController;private void Update(){ if (Input.GetKeyDown(KeyCode.X)) { dialogueTreeController.StartBehaviour(); }}
为了保证对话正确显示,在UI层需要添加官方的预制体和事件系统监听
存在的问题待学习
:question:NodeCanvas的对话树似乎 在显示富文本内容时存在问题。例如使用颜色代码,会出现输出颜色代码之后再实现效果的问题
:question: 其配置的UI显示界面不清楚是如何进行绑定的
FSM有限状态机是一种设计方式,用于处理不同状态的切换
其主要包含以下几个部分:
状态(进入、更新、离开)
过渡条件 【用于控制状态的切换】
状态机控制器【用于控制状态机】
本文主要介绍NodeCanvas的FSM使用,具体基础FSM概念不做解释。
FSM示例图
开始为游戏对象添加如下脚本:
结点类型NodeCanvas中结点分为几个类型:
Action State(动作状态,只处理进入状态)
Super Action State (超级动作状态,能处理进入、更新、离开状态)
Pass(过渡态,不做任何处理)
Parallel(并行。 在状态机处于任意状态时,并行执行)
Any State(能够从任意状态进行状态切换,在状态机过程中,时刻监听)
结语在FSM中,也没什么太多可以讲的,其条件和行为结点为NodeCanvas行为树、状态机、对话树所共用。
个人感觉,NodeCanvas设计最棒的一点就是,他三种系统用的同一个底层,而且可以互相嵌套兼容。
认识行为树
什么是行为树?自顶向下的树形结构
行为树Behavior Tree 是一种数据结构,自顶向下的树形结构。
什么情况下要使用行为树?情况多变,条件复杂
在处理逻辑复杂的问题时,这个复杂可能是条件复杂,情况多样。
行为树并非是游戏Ai的专属,在处理其他复杂业务逻辑或可能时都可以尝试用行为树来解决。
行为树有什么优点?高效可读,易于扩展
行为树解决的问题是将复杂的关系,简单化,能很大程度的加强程序的可读性,健壮性。
行为树由哪几部分组成?主要由四部分 CDAC 组成 ,两根两叶
1234Composites 组合节点 只能作为根节点,控制子节点的执行(顺序)Decorator 装饰节点 只能作为根节点,修饰子节点Actions 行为节点 只能作为叶子节点,执行具体动作Conditinals 条件节点 只能作为叶子节点,判断条件
行为树的工作流程?自顶向下,从左至右(并发进行),逐层进行
行为树执行的成果(成功/失败),由其子节点决定,子节点执行完成后会向父节点传递成功/失败的 ...
本文采用:unity2021.1.5f1c1 HDRP渲染管线
开始创建HDRP项目,并设置好相关配置。
搭建的场景如图所示:
:small_orange_diamond:认识VFX Graph创建一个VFX Graph可以点击Edit进入编辑界面,其编辑界面和ShaderGraph类似。
:small_blue_diamond: 编写Graph孵化器循环
针对于持续性和非持续性进行区分
初始化粒子
完成上述2个步骤时,效果如下,记得替换粒子的贴图
渲染粒子
通过渲染器设置,火花效果更好了
更新粒子-使用重力现在我们的火花是直线发射的,我们想让其受到一个重力自动下垂。
在更新粒子模块,增加重力,设置一个随机数重力。
添加重力后,可以看到我们的粒子受重力而下垂。
:heart:完善火花发射形状
Local和World坐标
在布局坐标中,粒子效果不会残留,为了让我们的火花可以在世界中残留,需该为世界坐标系
添加碰撞
我们希望火花粒子能够和周围环境产生碰撞
碰撞框添加如下碰撞框组件:
其中:LifeTime Loss为生命损失
发现我们的粒子在接触 ...
体验一下ASE插件
体验创建一个ASE Suface shader,依图连接节点。
效果如下:
感受
整体感受ASE插件,在某些方面确实强于ShaderGraph ,例如可以直接在默认渲染管线中使用。
总之,用起来挺爽的。:smile:
本系列基于Unity2021.1.5f1c1
安装HDRP在管理器安装hdrp后会自动弹出此初始化对话框。
根据对话框检测的步骤,将需要修正的地方进行修正。
修正后全部呈现绿√。
修正完成,系统自动添加了如下包。
添加天空盒子在Volume组件中添加如下组件,可以设置天空盒。
调节光线亮度在Volume组件中添加如下组件,可以设置调节光线。
走进UE
未读
上一节中,我们熟悉了Ue的基本操作并编写简单蓝图控制了一个椅子的移动,这一节我们来进一步完善我们的主角~
导入资源首先我们选择一个人物模型导入。
删除原先的静态网格椅子模型,在Mesh中选择导入的模型Skeletal Mesh。
可以看到我们的角色替换成了模型:
走进UE
未读
UE4 每个月送免费资源,实在是太香了。 :smile:
所以本系列是一个进入UE4学习过程的记录。
参考文档
官方文档: https://docs.unrealengine.com/4.26/zh-CN/Basics/Actors
前置准备首先下载EPIC,使用EPIC下载UE4,这里使用的是4.26.2。
设置语言为中文编辑器默认是英文的,可以根据需要设置为中文。
基础概念介绍界面布局基础的界面布局如下图所示。
Player Start 玩家出生点Player Start 为玩家的出生点(起点),游戏开始时,玩家从这里开始。
游戏模式
游戏模式是游戏的基本设定,每一个游戏都必须有一个游戏模式设置。
默认Pawn类选择游戏角色。
需要在世界场景设置中设置当前需要使用的游戏模式。
世界场景设置
项目输入设置
为了映射按键操作我们需要在项目设置中进行按键映射。
设定角色使其移动设定物件首先需要设置,角色的静态网格(决定呈现内容),设置摄像机(用于拍摄游戏角色)。
设定角色行为蓝图
通过蓝图我们来进行角色行为设置
前后左右移动基本蓝图
角色旋转值设定
...










