Behavior-Tree行为树
行为树概念1.介绍:行为树Behavior Tree简称BT,是一颗包含了层级节点的树结构,一般用来控制AI的决策行为,但其逻辑清晰的可视化效果现在也可以用来做各种配置;
2.原理:行为树通过自顶向下的遍历方式,通过一些条件来搜索这颗树,最终根据当前条件确定需要做的行为(叶子节点),来执行它,达到AI决策的效果;
行为树组成 行为树主要由组合节点、装饰节点、条件节点、行为节点四种抽象节点抽象而成;
1.组合节点(Composites):主要包含Sequence顺序组合节点、Selector选择组合节点、Parallel并行组合节点,这些节点之间也可以相互之间进行搭配组合,组成新的组合节点;
2.修饰节点(Decorator):连接树叶的树枝,各种类型的修饰节点,这些节点决定了AI如何从树的顶端根据不同的情况来沿着不同的路径来到最终的叶子这一过程;让子节点循环操作或者让子节点一直运行知道返回某个运行状态,或者对结果取反;
3.条件节点(Conditinals):用来判断条件是否成立;行为树的设计也遵守职责单一的原则,将判断也专门做一个节点独立处理,比如判断目标是否在视野内,这种功能在A ...
C#-IO流读写和文件操作
文件系统IO流IO流介绍:
概念:流时字节序列的抽象概念,流的单位是字节;
作用:IO流是为了对数据进行操作,数据的存储,显示都是通过IO流完成的;
操作对象:操作的对象是存储器中的文件,内存中的流(Stream),IO流可以操作不同格式的数据文件(文本文件、二进制文件);
注意事项:
流使用后必须关闭;
把流中数据加载到内存时要考虑内存溢出等问题;
文件操作类Directory:静态类,操作目录
Path:静态类,对文件或目录的路劲进行操作
C++入门
C++基本概念简介1.语言的发展:二进制值类==>汇编语言==>中高级语言(C,C++,Java)
2.C++说明:C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程,C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点,C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序;
3.C++发展时间:
1998:C++98,第一个C++标准;
2003:C++03,第二个C++标准;
2011:C++11,第三个C++标准;
2014:C++14,第四个C++标准;
2017:C++17,第五个C++标准;
环境的建立1.C++编译器:
GCC编译器:
Visual Studio IDEA:
C++基本语法1.编译&执行:
打开一个文本编辑器,添加上述代码;
保存文件为 hello.cpp;
打开命令提示符,进入到保 ...
计算机操作系统原理笔记
1 操作系统绪论1.1 操作系统概念定义:操作系统是计算机系统中的一个系统软件,操作系统是管理和控制计算机操作系统中的硬件和软件资源,利用这些资源来组织计算机的工作流程,为用户提供一个足够功能、使用方法、可扩展、可管理、安全的工作环境,是用户和计算机之间的一个接口。
特征:并发、共享、虚拟、异步。
1.2 操作系统发展历程手工操作(无操作系统)—单道批处理—多道批处理—分时系统—实时系统—微机操作系统的发展。
1.2.1单道批处理原理:计算机自动的一个接一个的处理作业,直到磁带上所有的作业都完成,虽然对作业的处理是成批的,但是内存中只有一个作业。
特征:内存中一道程序数目、独占CPU、没有作业和进程调度、程序次序严格对应。
1.2.2多道批处理原理:用户提交的作业存放在外存上,并排成一个队列,作业调度程序根据一定的算法,选择若干的作业调入内存,使它们共享CPU和内存资源。
特征:内存中多道程序、交替占用CPU、需要作业和进程调度、程序次序不严格对应。
1.2.3分时系统特征:多路性、独立性、及时性、交互性。
1.2.4实时系统特征:多路性、独立性、及时性、交互性、可靠性。
2 ...
Python语言
Python简介1.Python的说明:
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言;
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码;
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术;
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏;
2.Python的版本区别:初学者直接使用Python3即可
Python2:
Python3:
Python的基本语法1.编程方式:
交互式编程:交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码;
脚本编程:通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效,Python的后缀名一般以py结尾;
2.行和缩进:Python不使用{}来进行逻辑包裹,而是使用缩进来进行编写模块,缩进的空白数必须严格执行 ...
设计模式
设计模式概述个人框架中的应用系统架构上
状态模式:FSM有限状态机;模块场景之间的切换;AI控制
单例模式:游戏中的唯一管理者
外观模式:GamePlay中的各个系统;封装的工具;不同的模块
中介者模式:事件系统;MVC中的C层就是M和V的中介
角色设计上
桥接系统:数据配置如技能配置桥接引用Buff和输入的实现;原版ECS实体和组件
策略模式:Buff系统
模板模式:ECS框架底层关键逻辑,同时也是ECS的短板;UIPanel面板逻辑公用;技能系统流程公用
角色创建
工厂方法:角色、技能、buff的创建;ECS逻辑分发的概念
建造者模式:ET框架组件式编程;游戏中的特效组织;UI界面的拼凑
@享元模式:对象池;ET数值系统?
战斗开始
组合模式:UI框架中的V层;ECS系统的生命周期管理
适配器模式:ECS无法继承只能通过适配接口来扩展
辅助系统
观察者模式:事件系统;MVC中的M层;成就系统
代理模式:游戏中的资源加载和服务器缓冲七大原则单一职责原则SRP
从软件变化的角度来看,就一个类而言,应该仅有一个让它变化的原因;通俗地说,即一个类只负责一项 ...
Unity进阶-数据持久化二进制
概述1.二进制说明:2进制是计算技术中广泛采用的一种数制。2进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”;计算机中存储的数据本质上都是2进制数的存储,在计算机中位(bit)是最小的存储单位,1位就是一个0或者一个1;
2.XML和Json的缺点:xml和json安全性和效率较低,如下分析
清晰易懂是他们的共同好处,但是也是一把双刃剑,比如如果我们用xml或者json存储数据,只要玩家找到对应的存储信息, 就能够快速修改其中的内容;
而且由于他们把数据转换成了对应的xml或者json字符串,我们最终在存储数据时存储的都是字符串数据,在读写时效率较低,内存和硬盘空间占用较大;
3.二进制数据持久化的优点:
安全性较高;
效率较高;
网络通信铺垫;
基础知识各类型转字节数组1.二进制读写的本质
//它就是通过将各类型变量转换为字节数组
//将字节数组直接存储到文件中
//一般人是看不懂存储的数据的
//不仅可以节约存储空间,提升效率
//还可以提升安全性
// ...
Unity进阶-数据持久化Json
Json概述1.Json说明:Json是国际通用的一种轻量级的数据交换格式,主要在网络通讯中用于传输数据,或本地数据存储和读取,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率;
2.Json和XML的区别:
共同点:
都是纯文本;
都有层次结构;
都具有描述性;
不同点:
Json配置更加简单;
Json在某些情况读写更快速; Json文件格式Json配置规则
1.注释规则:和C#一模一样;
2.符号含义:
大括号{}:对象;
中括号[]:数组;
冒号::键值对对应关系;
逗号,:数据分割;
双引号””:键名/字符串;
Excel转Json的网站1.Excel转Json的网站在线Excel、CSV转JSON格式-BeJSON.com
2.自己写编辑器工具去转换
C#存取Json文件JsonUtlity1.JsonUtlity是什么?
//JsonUtlity 是Unity自带的用于解析Json的公共类
//它可以
//1.将内存中对象序列化为Json格式的字符串
//2.将Json ...
Unity进阶-数据持久化XML
XML概述1.XML说明:可扩展标记语言,XML是国际通用的,它是用来传输和存储数据的一种文本特殊格式,后缀名一般为.xml,xml是一种树形结构;
XML文件格式XML基本语法1.编码格式:不同的字符,在内存中的二进制是不一样的,每一个字符对应一个数字,不同的编码格式字符对应的二进制是不一样的,否则会出现乱码;
2.注释:;
3.固定语法:;
4.基本语法:<元素标签>元素内容</元素标签>,多层嵌套包裹,形成树形结构,如下规则
每个元素都必须有关闭标签;
元素命名规则基本遵照C#中变量名命名规则;
XML标签对大小写敏感;
XML文档必须有根元素
特殊的符号应该用实体引用
< — < 小于
> — >大于
& — &和号
&apos — ‘ 单引号
" — “ 引号
XML 教程 | 菜鸟教程 (runoob.com)
XML属性1.属性语法:<元素标签 子元素名=”值” >元素内容</元素标签> or <元素标签 子元素名=”值” ...
计算机网络技术
计算机网络概叙基本概念1.定义:一些互连的、独立自治的计算机集合;
2.目的:资源共享、数据通信、负载均衡和分布式计算、数据信息集中处理;
3.一般分类:
按通信媒体:有线网络、无线网络;
按使用对象:公众网络、专用网络、接入网;
网络传输技术:广播式网络、点到点网络;
按地理覆盖(常用):
局域网:几十米到几千米之间;
城域网:几千米到几十千米;
广域网 :几十千米到几千千米,例如Internet;
网络拓扑结构1.常见的拓扑结构:
总线型拓扑结构:结构简单、易于阔充、属于广播网络;
星型拓扑结构:结构简单、易于实现和管理、但是耗费电缆、中心出问题会带动其他地方;
树形拓扑结构:易于分级管理和控制;
环形拓扑结构:结构简单、易于实现、传输时延确定和路径选择简单;
网状拓扑结构:充分利用网络资源,但是成本高;
计算机网络性能指标1.比特的概念:比特(bit)意思是一个二进制数字(0或1)。 B为字节(Byte),b为比特(bit),一字节为8比特,即1B = 8b。 网络技术中的数率指的是数据的传送速率,当数据率较高时,常常在bit/s前面加上字母,比如k = $10^3$ ...
数据结构和算法
绪论数据结构概论数据结构的定义1.数据:描述客观事物的数和字符的集合;
2.数据项:数据最小单位;
3.数据对象:性质相同的数据元素集合;
4.数据结构:数据元素之间的关系;
数据逻辑结构:由数据元素之间的逻辑关系组成;
数据的存储结构:数据元素以及其关系的物理结构;
数据的运算:施加在该数据上的操作;
逻辑结构1.定义:数据之间的抽象逻辑关系;
2.表示方法:图表表示、二元组表示;
3.逻辑结构类型:
集合:同属集合,无关系;
线性结构:一对一;
树形结构:一对多;
图:多对多;
存储结构(物理结构)1.定义:指数据的实际存储,逻辑结构在计算机存储实现;
2.物理存输类型:
顺序存储结构:连续存储
链式存储结构:非连续存储
索引存储结构:键值对
哈希(散列)存储:计算关键字哈希值仅存数据数据运算
1.定义:对数据实施的操作;
运算定义和运算实现分离:基于逻辑结构定义运算,基于存储结构实现运算
2.常用数据运算类型:增删改查以及排序;
数据类型和抽象数据类型1.数据类型:值类型,引用类型等;
2.抽象数据类型:从求解问题抽象出来的数据逻辑结构和抽象运算,与具体实现无关(重要 ...
Unity进阶-GUI
GUI概叙基础控件重要参数文本按钮单选框多选框输入框拖动条图像绘制和框复合控件工具栏和选择网格滚动视图和分组窗口自定义整体样式