首页 > 其他分享 >从零开始打造基于GraphView的行为树框架

从零开始打造基于GraphView的行为树框架

时间:2023-10-20 11:48:50浏览次数:45  
标签:框架 Unity 编辑器 从零开始 GraphView 行为 节点 运行

本文主要介绍了行为树的一些特点,以及如何在Unity中从零开始实现基于事件驱动的行为树Runtime框架(包括黑板参数、可扩展的自定义序列化数据格式等),与如何基于GraphView开发配套的行为树可视化编辑器与调试器(包括注释块、复制粘贴、Undo/Redo等)。   本课程属于进阶课程,适合已经有一定业务开发经验,并具有行为树与Unity编辑器的UI Elements开发基础知识的读者。 (使用的Unity版本:Unity2021.3lts)         相关课程推荐: 《Unity中基于前缀树的高性能红点系统实现》   自然妙有猫仙人:游戏客户端开发 多个开源项目的作者,曾就职于西山居、叠纸等游戏公司,热爱技术分享与造轮子,经常活跃于各个游戏行业开源社区的水群怪。  


  目录   1|前言 2|Runtime篇 3|Editor篇(附demo下载)  
  本篇转载自《从零开始打造基于GraphView的行为树框架》的第1节。   行为树是在游戏开发中常见的业务解决方案。   可用于在怪物AI、新手引导、技能逻辑等模块中进行可视化的流程控制。   行为树就其运行过程可分为轮询驱动与事件驱动两种。   前者会在每个节点上有一个Update方法用于返回当前节点状态(正在运行、运行成功或运行失败),对于当前所有行为树对象正在运行的所有节点,每帧都会去调用它们的Update方法以获取当前运行状态以作后续处理。   而后者则没有Update方法,只在子节点运行结束时去通知父节点自身的运行状态,相比前者会更具性能优势。   行为树的节点可被分为三大类: 1. 复合节点 2. 装饰节点 3. 动作节点   复合节点(如序列节点、并行节点等)具有多个子节点,会根据特定规则去逐个运行或同时运行所有子节点。   装饰节点(如反转节点、成功节点等)仅有一个子节点,会根据子节点运行结果来决定自己的运行结果。   动作节点没有子节点,位于整个行为树的末端以负责最终的逻辑执行,通常会封装具体模块的业务逻辑(如寻路、攻击等)。   一颗行为树的完整结构可能是这样的:   在本课程中,我们将实现一套基于事件驱动的行为树Runtime框架,并支持黑板参数与多种序列化数据格式,然后通过Unity内置的GraphView打造配套的可视化编辑器与调试器,并支持注释块、复制粘贴、Undo/Redo等功能。   最终效果如下:    文末会提供包含完整代码与测试用例的Demo工程方便读者学习。  
  以上就是《从零开始打造基于GraphView的行为树框架》的第1节,此篇文章比较适合喜欢自己造轮子的读者、长期从事业务逻辑开发想提升自己的读者以及对GraphView节点编辑器开发感兴趣的读者。   读完全篇后你会获得: 1、完整的行为树Runtime框架与配套的可视化编辑器与调试器; 2、通过GraphView开发节点编辑器与配套功能的实践经验; 3、包含完整Editor、Runtime、测试用例代码的Demo工程。

标签:框架,Unity,编辑器,从零开始,GraphView,行为,节点,运行
From: https://www.cnblogs.com/uwatech/p/17776677.html

相关文章

  • java集合框架及其特点
    常见的集合以及他们的特点有哪些呢java集合类主要由Collection和Map两个根接口派生出来的。Collection派生了List,Set,Queue这三个子接口。1、List代表有序可重复集合,可直接根据元素的索引来访问。ArrayList:排列有序,可重复底层使用数组速度快,增删慢线程不安全容量不够......
  • 从0到1实现 OpenTiny 组件库跨框架技术
    本文分享自华为云社区《从0到1实现OpenTiny组件库跨框架技术》,作者:华为云社区精选。在华为云《DTSETechTalk》技术直播第44期《0基础玩转OpenTiny跨框架组件库,实现一站式前端进阶》中,华为云前端开发DTSE技术布道师莫春辉老师在本期直播中与开发者一起交流了OpenTiny组件......
  • jfinal框架下,连接国产达梦数据库,抛出SocketTimeoutException异常
    公司为政府开发项目,主框架选择springboot,orm框架使用jfinal。数据库为国产达梦数据库写统计类服务时,通常sql运行时间会比较久,超过10s的sql一定会报SocketTimeoutException异常 尝试使用原生jdbc创建连接,运行sql毫无问题。遂检查连接池设置。jfinal使用druid连接池网上搜索......
  • Disjob—分布式任务调度框架
    简介Disjob是一款分布式的任务调度框架,天然为支持分布式长任务执行而设计,它除了具备常规的任务调度功能外,还提供:任务拆分及分布式并行执行、暂停及取消运行中的任务、恢复执行被暂停的任务、任务执行失败重试、保存任务的执行快照(Savepoint)、任务依赖、任务编排(DAG)、广播任务......
  • python学习笔记-异步非阻塞web框架
    一、异步非阻塞框架介绍1、介绍支持异步非阻塞web框架:tornado,nodejs2、定义对比异步IO模块:我们作为客户端向服务端“并发”请求异步非阻塞web框架:针对服务端,希望一个线程处理更多的请求二、tornado异步非阻塞【要点提炼】使用装饰器@gen.coroutine模拟等待,使用特殊的......
  • 开源游戏 | 一款采用 Java开发的基于小孔成像原理与图形光栅化的字符 3D 画面框架构建
     去关注、不迷路一、项目概述       这是一款采用JavaSwing开发的基于小孔成像原理与图形光栅化的字符3D画面框架构建的空战游戏,简单说就是作者为了做个3D字符空战游戏,顺手写了个3D引擎,别人的本科毕设。注:dogfight为军事用语,是指战机近距离接战缠斗,可直接......
  • Scrum框架简介:角色、工件和仪式
    ​什么是Scrum敏捷开发方法?Scrum是一种广泛使用的敏捷开发方法,旨在提高软件开发和项目管理的效率。Scrum强调迭代、协作、自组织和透明度,使团队能够更好地应对不断变化的需求和复杂性。Scrum方法的核心思想是通过一系列短期周期来交付功能,每个周期通常称为Sprint,以便及早获取用......
  • Util应用框架Web Api开发快速入门
    本文是使用Util应用框架开发WebApi项目快速入门教程.前面已经详细介绍了环境搭建,如果你还未准备好,请参考前文.开发流程概述创建代码生成专用数据库.Util应用框架需要专门用来生成代码的数据库,该数据库仅用于代码生成.约定:代码生成数据库应以.Generator结尾.当......
  • Unity 如何设计网络框架
    在Unity框架设计中与游戏服务器对接的网络框架也是非常重要的一个模块,本文給大家分享如何来基于Unity来设计一个网络框架,主要的讲解以下几个点:(1)TCP半包粘包,长连接与短连接,IO阻塞;(2)TcpSocket与UDPSocket的技术方案;(3)Unity的序列化与反序列化技术方案;(4)TC......
  • Go 布道者框架beego的Router 功能详解
    Beego是一个用于构建Web应用程序和后端服务的Go语言框架。它提供了一整套功能,包括路由、模型、视图、会话管理等。0go框架beego现在被淘汰了吗?2016年提出的这个问题,由于当时自己刚入门学习go,就想找一个快速入门的框架学习使用,所以提出了这个很无脑的问题,在此,也向框架作者表......