diff --git "a/DungeonShooting_Document/\351\241\271\347\233\256\345\270\256\345\212\251\346\226\207\346\241\243.md" "b/DungeonShooting_Document/\351\241\271\347\233\256\345\270\256\345\212\251\346\226\207\346\241\243.md" index 374d253..c360d84 100644 --- "a/DungeonShooting_Document/\351\241\271\347\233\256\345\270\256\345\212\251\346\226\207\346\241\243.md" +++ "b/DungeonShooting_Document/\351\241\271\347\233\256\345\270\256\345\212\251\346\226\207\346\241\243.md" @@ -9,18 +9,18 @@ * [2.项目资源](#2项目资源) * [2.1.目录结构](#21目录结构) * [2.2.脚本获取资源](#22脚本获取资源) - * [2.3.重新生成`ResourcePath`](#23重新生成-resourcepath) + * [2.3.重新生成ResourcePath](#23重新生成resourcepath) * [3.游戏框架](#3游戏框架) * [3.1.简述](#31简述) * [3.2.游戏核心系统](#32游戏核心系统) - * [3.2.1.什么是`ActivityObject`](#321什么是-activityobject) - * [3.2.2.什么是`Activity模板场景`](#322什么是-activity模板场景) - * [3.2.3.如何创建`ActivityObject`](#323如何创建-activityobject) + * [3.2.1.什么是ActivityObject](#321什么是activityobject) + * [3.2.2.什么是Activity模板场景](#322什么是activity模板场景) + * [3.2.3.如何创建ActivityObject](#323如何创建activityobject) * [第一步, 创建模板场景:](#第一步-创建模板场景-) * [第二步, 创建脚本:](#第二步-创建脚本-) - * [实例化`ActivityObject`](#实例化-activityobject) - * [3.2.4.自定义`RegisterActivity`](#324自定义-registeractivity) - * [3.2.5.`ActivityObject`常用功能](#325-activityobject-常用功能) + * [实例化ActivityObject](#实例化activityobject) + * [3.2.4.自定义RegisterActivity](#324自定义registeractivity) + * [3.2.5.ActivityObject常用功能](#325activityobject常用功能) * [自定义组件](#自定义组件) * [运动控制](#运动控制) * [垂直方向运动](#垂直方向运动) @@ -31,8 +31,8 @@ * [创建模板房间](#创建模板房间) * [绘制房间](#绘制房间) * [配置房间门生成位置](#配置房间门生成位置) - * [`ActivityMark`标记](#activitymark-标记) - * [扩展`ActivityMark`标记](#扩展-activitymark-标记) + * [ActivityMark标记](#activitymark标记) + * [扩展ActivityMark标记](#扩展activitymark标记) * [3.4.UI系统](#34ui系统) * [3.4.1.UI系统概述](#341ui系统概述) * [3.4.2.UI代码生器](#342ui代码生器) @@ -76,7 +76,7 @@ var resource = ResourceManager.Load(ResourcePath.resource_theme_mainTheme_tres); ``` -### 2.3.重新生成`ResourcePath` +### 2.3.重新生成ResourcePath 如果项目中有资源变动, 则可以使用`Tools`页签下的`重新生成ResourcePath.cs文件` ![](文档资源/image_6.png) @@ -97,7 +97,7 @@ 在`Main/ViewCanvas/SubViewportContainer/SubViewport`的子节点将开启4倍缩放, 并且启用完美像素 该节点放置除UI以外的任何节点 -#### 3.2.1.什么是`ActivityObject` +#### 3.2.1.什么是ActivityObject 定义: 游戏内所有可活动物体的基类叫做`ActivityObject` 源代码: [ActivityObject.cs](../DungeonShooting_Godot/src/framework/activity/ActivityObject.cs) @@ -115,7 +115,7 @@ 通过下面这张图可以了解游戏中的物体与`ActivityObject`的关系 (注意: 该图为早期开发版本的继承关系图, 后面开发可能会有修改) ![](文档资源/2023-03-26_030144.png) -#### 3.2.2.什么是`Activity模板场景` +#### 3.2.2.什么是Activity模板场景 定义: `Activity模板场景`是指可以可以被实例化出`ActivityObject`对象的场景, 但是场景根节点必须是`ActivityObjectTemplate`节点 上面定义看起来有矛盾: `ActivityObjectTemplate`没有继承`ActivityObject`, 为啥以它为根节点的场景却能实例化出`ActivityObject`? @@ -127,7 +127,7 @@ 通过下面这张图可以更好的立即`Activity模板场景`和`ActivityObject`的关系 (缺张图...) -#### 3.2.3.如何创建`ActivityObject` +#### 3.2.3.如何创建ActivityObject 这里的创建分为两步: ##### 第一步, 创建模板场景: 创建一个空场景, 并且添加`ActivityObjectTemplate`节点 @@ -164,13 +164,13 @@ [RegisterActivity(ActivityIdPrefix.Enemy + "0001", ResourcePath.prefab_role_Enemy_tscn)] ``` -##### 实例化`ActivityObject` +##### 实例化ActivityObject 可通过`ActivityObject.Create(id)`创建物体, 这个`id`可以结合`ActivityIdPrefix`, 那么创建敌人最终可以这样写 ```csharp var enemy = ActivityObject.Create(ActivityIdPrefix.Enemy + "0001"); ``` -#### 3.2.4.自定义`RegisterActivity` +#### 3.2.4.自定义RegisterActivity 某些情况下需要更改`RegisterActivity`的参数, 或者需要对实例化出来的`ActivityInstance`进行统一的操作, 那么就需要我们自己写一个子类来继承`RegisterActivity`. 操作`ActivityInstance`需要重写: ```csharp @@ -185,7 +185,7 @@ 例子: 注册武器, [RegisterWeapon.cs](../DungeonShooting_Godot/src/game/item/weapon/RegisterWeapon.cs) 由于创建武器必须指定武器属性数据, 那么原来的`[RegisterActivity()]`就不适用了, `RegisterWeapon`重写了构造函数, 改变了初始化参数, 并且重写`CustomHandler()`, 对`ActivityInstance`进行初始化属性操作 -#### 3.2.5.`ActivityObject`常用功能 +#### 3.2.5.ActivityObject常用功能 ##### 自定义组件 这个功能类似于`Unity`的`MonoBehaviour`, 组件必须继承`Component`类, 组件的作用是拆分功能代码, 开发者可以将相同功能的代码放入同一个组件中, 与`Godot`的`Node`不同的是, 挂载到`ActivityObject`上的组件并不会生成一个`Node`节点, 它相比于`Node`更加轻量 @@ -400,7 +400,7 @@ * 配置好一个房间的门生成区域后, 如果绘制房间时改变了房间的大小或者位置, 则编辑器会清空配置的门区域 * 编辑门区域功能属于扩展编辑器功能, 因此单纯改变门区域数据不会在场景页签上标`*`(编辑器不会认为该资源有修改), 修改后需要及时按下`ctrl`+`s`保存, 以免造成数据丢失 -##### `ActivityMark`标记 +##### ActivityMark标记 `ActivityMark`用于模板房间中创建`ActivityObject`对象, 并支配置指定的物体, 第几波生成该物体以及生成物体延时时间 源代码: [ActivityMark.cs](../DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs) @@ -443,7 +443,7 @@ public float DelayTime = 0; ``` -###### 扩展`ActivityMark`标记 +###### 扩展ActivityMark标记 项目中提供了以下几个扩展`ActivityMark`属性的节点: * [WeaponMark](../DungeonShooting_Godot/src/framework/map/mark/WeaponMark.cs): 创建武器设置弹药等 * [EnemyMark](../DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs): 创建敌人并设置武器和弹药