正文 忏悔时间:我对这一章节的内容有点夸大其词。表面上是关于状态设计模式的探讨,但我不得不谈及游戏中关于有限状态机制(或称为"FSM")的基本概念。不过我一旦提及到这个,那么我想我也不妨介绍下分层状态机和下推自动机的概念以及相关原理。 这会涵盖多方面的知识点,为了尽可能地缩短文章篇幅,文中使用的代码示例省略了一些细节,这些是您必须自己填写的。不管怎样,我还是希望这些知识点仍然能够清晰以便能让你了解整个理念。 如果你从未听说过状态机,也请不要感到难过。状态机不像AI和编译器、黑客那样,它在编程圈子里没有那么耳熟能详。不过我认为它们更应该广为人知,所以我在这里会把它们抛到一个不同层次的问题上去...

  vVTRx3z6zETO   2023年11月02日   66   0   0

如何快速查找类/结构体成员变量的赋值:直接搜索变量引用 1.1注意赋值变现:变量名= 1.2,变量名()、:变量名(),总结表现形式为:变量名( PS:好处:注意特征,可以从茫茫查找信息中,快速注意到赋值地方【截图中,在C初始化列表中,ImportStore使用了带参构造函数进行初始化】 如何快速查找类实例化的地方: 2.1先搜索【类名(】,如果没搜到,可能是模板实例化 2.2如果没搜到,则搜索【<类名】 需要在引擎启动初期就需要Attach调试,如何处理? 可以在入口函数【Main函数】里面,添加sleep 一个类成员变量赋值的途径: 4.1通过构造函数的初始化列表赋值 4.2通...

  vVTRx3z6zETO   2023年11月02日   46   0   0

以PS设置启动参数为例:2.要在游戏中获取启动参数值,需要知道启动参数,保存的位置:2.1需要了解【Engine\Source\Runtime\Core\Public\Misc\CommandLine.h】 /    Returns an edited version of the executable's command line    with the game name and certai...

  vVTRx3z6zETO   2023年11月02日   63   0   0

标题页面的设计 第一个页面是标题页面,用一个TextView控件显示游戏的名称quanet的世界,然后两个Button控件,一个是continue,一个是exit。 打开AndroidStudio4.1.3,选择CreateNewProject,选择EmptyActivity,项目名称为MyGame。 首先设计页面的布局,在layout/activity_main.xml中输入 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas....

  vVTRx3z6zETO   2023年11月02日   60   0   0

一:前言 库可以理解为一个工具箱,实现了可重用的功能,一系列有用的类组合起来可以称之为类库框架为我们提供了⼀个规则,你必须遵守他,框架的最大特征就是会接管程序的主控制流程,你只需要写业务逻辑代码,具体底层的执行由框架来调用 二:框架思想的演变 一开始接触U3D游戏开发,我们会习惯把一些与GameObject没有明显关系的脚本(内存池,Manager等)挂载到一个空的GameObject上,使用的时候通过GameObject.Find()找到目标进行使用,这种方式称为EmptyGo,但是当我们的项目规模越来越复杂时,根本无法管理 当我们接触了第一个设计模式:单例模式后,会想到可以把那些与G...

  vVTRx3z6zETO   2023年11月02日   61   0   0

一:目的 当设计一个Manager时候,我们希望整个程序只有一个该Manager的对象实例,最先想到的实现方法是这样的 public class XXXManager {     private static XXXManager _instance = null;     public static XXXManager Ins     {   &nb...

  vVTRx3z6zETO   2023年11月02日   52   0   0

一:目的 在制作游戏过程中,UI界面都是必不可少的,多则上百个少则几个,如果这些UI界面都放在场景里(如下图所示),那么运行的时候会占用大量的内存一般都是将每一个UI界面制作成一个Prefab动态的进行显示隐藏,加载卸载所以我们需要一个管理器统一管理UI的相关操作 二:解决的问题及优点 ——不需要创建UI画布和UI相机,动态创建并设置属性——管理每一个UI界面的层级——打开和关闭UI界面——查找某一个UI界面 三:使用方法 ——将所有UI制作成预制体统一放在Resources—Prefabs—UI文件夹下——所有的UI预制体都需要与挂载在身上的脚本名相同——所有的UI预制体身上的脚本都需要...

  vVTRx3z6zETO   2023年11月02日   53   0   0

一:目的 游戏音频的播放在任何游戏中都占据非常重要的地位,音频的播放可以分为两种,一种为游戏音乐,另一种为游戏音效。前者适用于较长的音乐,如游戏背景音乐。第二种适用于比较短的游戏音乐,如开枪瞬间的音效 在Unity中有两个关于音频的重要组件:AudioListener和AudioSource,通过AudioListener进行监听,AudioSource进行播放 所以我们需要一个管理器统一管理音频的相关操作 二:解决的问题及优点 ——音效的播放、暂停、继续、静音——背景音乐的播放、暂停、继续、静音、渐隐 三:使用方法 ——将所有音频文件统一放在Resources文件夹下的Sounds文...

  vVTRx3z6zETO   2023年11月02日   67   0   0

一:目的 游戏开发中,计时是一个常见的功能。比如技能的冷却时间,角色的生命回复等等 一般的实现方法是通过协程或者Invoke,但是这样并没有统一管理所有的计时器,所以我们需要一个管理器统一管理计时器的相关操作 二:解决的问题及优点 ——注册和注销计时器——得到某一个计时器的倒计时剩余时间——设置所有倒计时同步或异步 三:使用方法 ——使用TimerMgr.Ins.XXX TimerMgr.Ins.RegisterTimer(3, () =>  {      Debug.Log("finish 1...

  vVTRx3z6zETO   2023年11月02日   41   0   0

一:目的 内存管理是软件开发中重要的一项,在游戏中,有一些需要频繁创建和销毁的对象,例如射击游戏中的子弹,跑酷游戏中的障碍物等,通常的方法是使用Instantiate和Destroy,不断的开辟和释放内存,但是这样的操作是致命的,会产生内存碎片 什么是内存碎片:内存碎片意味着在堆中的空余空间被打碎成了很多小的内存碎片,而不是大的连续内存块,总共可用内存也许很大,但是最长的连续空间可能很小很小 例如下图所示,假设我们最后还有20个空余字节,但是被一块正在使用的内存O2分割成了两部分,这时我们尝试分配15字节的对象就会失败,最终导致游戏崩溃 所有我们可以定义一个池对象,其中包含了一组可重...

  vVTRx3z6zETO   2023年11月02日   35   0   0

早早就想写这篇文章,但这段时间忙于工作的事情,就不自觉地给了自己各种懒惰的理由。现在回头看下这个问题,总结下erlang游戏开发经验。就当是,为我过去一段时间的erlang开发经历,画上一个小句号。 1.架构设计 很多人都说Erlang天生分布式,归结原因是erlang分布式这块实现比较完善。节点间的通信是透明的,无论是节点内的进程,还是不同节点的进程,都可以使用erlang:send/2发送消息,而且数据不需要做任何转换。 所以,很多项目会选用多节点架构,可以通过横向拓展(增加机器数量)来支撑更多负载,把性能压力大的子系统分配到不同的节点,这样,就可以支持更多的在线玩家。 这样做的出发...

  vVTRx3z6zETO   2023年11月02日   43   0   0

一:前言 两者都可以去设置一个对象为另一个对象的子物体SetParent方法中有两个参数,第二个参数表示是否使用世界坐标,默认为true 例如下面这段代码,如果SetParent的第二个参数为true,child的位置将会是(-1,-1,-1) using UnityEngine;   public class Test : MonoBehaviour {     void Start()     {    &n...

  vVTRx3z6zETO   2023年11月02日   62   0   0

一、什么是DAPP(分布式应用)?DAPP是DecentralizedApplication的缩写,中文叫分布式应用/去中心化应用。通常来说,不同的DAPP会采用不同的底层区块链开发平台和共识机制,或者自行发布代币(也可以使用基于相同区块链平台的通用代币)。DAPP不同的底层区块链开发平台就好比手机的IOS系统和Android系统,是各DAPP的底层生态环境。DAPP就是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方。DAPP于区块链,就好比APP之于IOS和Android。.本文由qkljys123整理发布. 区块链游戏数据储存在区块链上   第一是数据储存在...

  vVTRx3z6zETO   2023年11月02日   45   0   0

vs2012,新建winform应用程序,第一个练习,空白窗体。 app.config <?xml version="1.0" encoding="utf-8" ?> <configuration>     <startup>          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5...

  vVTRx3z6zETO   2023年11月02日   45   0   0

拖放一个标签,三个按钮,属性栏中设定各自的属性,最终形成的代码,就和我们自己手动写代码是一样的。 form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using Sys...

  vVTRx3z6zETO   2023年11月02日   41   0   0

【游戏(手游,端游等)开发】C序列化proto后生成bytes文件,在lua层解析成proto function Process_RunBattle:GetProto(path)     local result = read_bytes(path)     --字节流转换成字符串     local str = string.char(unpack(result))   &nbsp...

  vVTRx3z6zETO   2023年11月02日   39   0   0

ECS三要素 组件、系统、管理器 在2018环境下的ECS环境配置 学习ECS项目,需要导入5个包 Entities Mathematics数学 HybridRender混合渲染 Jobs Burst 简单的ECS项目只需要安装前三个插件 18版本HelloWorld 让一个cube在场景中旋转起来。在场景中制作一个红色的Cube,并为它添加组件和系统两个脚本。RotationCubeComponent.cs和RotationCubeSystem.cs RotationCubeComponent.cs /    使用Unity2018.4版本&nbsp...

  vVTRx3z6zETO   2023年11月02日   64   0   0

【h5游戏开发】窗体中拖放一个标签 form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;   names...

  vVTRx3z6zETO   2023年11月02日   51   0   0

【游戏开发】vs自动生成的代码,我就不再这里重复了。 form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; &nb...

  vVTRx3z6zETO   2023年11月02日   33   0   0

【游戏开发】form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;   namespace XN...

  vVTRx3z6zETO   2023年11月02日   39   0   0
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~