更新文档
This commit is contained in:
parent
2ae188c579
commit
89dd0c8e38
|
@ -104,13 +104,13 @@ public partial class YourActivity : ActivityObject
|
|||
}
|
||||
```
|
||||
为了方便区分物体类型, 可以使用`ActivityIdPrefix`类中的常量来添加`id`前缀, 目前支持的类型如下:
|
||||
* Role: 角色
|
||||
* Enemy: 敌人
|
||||
* Weapon: 武器
|
||||
* Bullet: 子弹
|
||||
* Shell: 弹壳
|
||||
* Other: 其他类型, 例如门, 箱子等
|
||||
* Test: 测试物体
|
||||
* **Role**: 角色
|
||||
* **Enemy**: 敌人
|
||||
* **Weapon**: 武器
|
||||
* **Bullet**: 子弹
|
||||
* **Shell**: 弹壳
|
||||
* **Other**: 其他类型, 例如门, 箱子等
|
||||
* **Test**: 测试物体
|
||||
|
||||
例如我们创建一个敌人, 那么`[RegisterActivity()]`就可以这么写:
|
||||
```csharp
|
||||
|
@ -123,7 +123,7 @@ public partial class YourActivity : ActivityObject
|
|||
var enemy = ActivityObject.Create<Enemy>(ActivityIdPrefix.Enemy + "0001");
|
||||
```
|
||||
|
||||
### 3.2.4.自定义`RegisterActivity`
|
||||
#### 3.2.4.自定义`RegisterActivity`
|
||||
某些情况下需要更改`RegisterActivity`的参数, 或者需要对实例化出来的`ActivityInstance`进行统一的操作, 那么就需要我们自己写一个子类来继承`RegisterActivity`.
|
||||
操作`ActivityInstance`需要重写:
|
||||
```csharp
|
||||
|
@ -138,9 +138,9 @@ public virtual void CustomHandler(ActivityObject instance)
|
|||
例子: 注册武器, [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`更加轻量
|
||||
|
||||
自定义组件代码:
|
||||
|
@ -156,7 +156,7 @@ var component = activityInstance.AddComponent<MyComponent>();
|
|||
```
|
||||
注意: 一个`ActivityObject`上不允许挂载多个相同的组件
|
||||
|
||||
#### 运动控制
|
||||
##### 运动控制
|
||||
`ActivityObject`的移动由自身的`MoveController`组件控制, 非特殊情况下不要直接修改`ActivityObject`的位置, 而是使用`MoveController.AddConstantForce()`函数来添加外力
|
||||
```csharp
|
||||
//添加一个向右的外力, 速度为100
|
||||
|
@ -167,7 +167,7 @@ var force = activityInstance.MoveController.AddConstantForce(new Vector2(0, 100)
|
|||
```
|
||||
物体的运动方向就是所有外力总和的方向, 通过`MoveController.Velocity`可以获取当前运动速度
|
||||
|
||||
#### 垂直方向运动
|
||||
##### 垂直方向运动
|
||||
当游戏中需要制作飞行物体或者模拟投抛运动时, 就需要控制物体纵轴所处高度, `ActivityObject`中提供了一系列控制纵轴方向运动的属性和函数, 以下列举几个关键属性和函数:
|
||||
```csharp
|
||||
/// <summary>
|
||||
|
@ -249,7 +249,7 @@ public void Throw(float altitude, float verticalSpeed, Vector2 velocity, float r
|
|||
```
|
||||
调用示例, 模拟弹壳投抛落在地上弹跳的过程
|
||||
```csharp
|
||||
var startPos = activityInstance.Master.GlobalPosition;
|
||||
var startPos = GlobalPosition;
|
||||
var startHeight = 6;
|
||||
var direction = GlobalRotationDegrees + Utils.RandomRangeInt(-30, 30) + 180;
|
||||
var verticalSpeed = Utils.RandomRangeInt(60, 120);
|
||||
|
@ -259,4 +259,63 @@ var shell = ActivityObject.Create<ShellCase>(ActivityIdPrefix.Shell + "0001");
|
|||
shell.Throw(startPos, startHeight, verticalSpeed, velocity, rotate);
|
||||
```
|
||||
|
||||
#### 协程
|
||||
##### 协程
|
||||
该功能与`Unity`的协程功能类似, 在协程函数中通过`yield`关键字暂停执行后面的代码, 并将控制权返还给`ActivityObject`, 协程常被用在动画处理和资源异步加载
|
||||
`ActivityObject`中协程相关函数:
|
||||
```csharp
|
||||
/// <summary>
|
||||
/// 开启一个协程, 返回协程 id, 协程是在普通帧执行的, 支持: 协程嵌套, WaitForSeconds, WaitForFixedProcess
|
||||
/// </summary>
|
||||
public long StartCoroutine(IEnumerator able);
|
||||
|
||||
/// <summary>
|
||||
/// 根据协程 id 停止协程
|
||||
/// </summary>
|
||||
public void StopCoroutine(long coroutineId);
|
||||
|
||||
/// <summary>
|
||||
/// 停止所有协程
|
||||
/// </summary>
|
||||
public void StopAllCoroutine();
|
||||
```
|
||||
协程`yield return`返回特殊值类型如下:
|
||||
* **WaitForSeconds**: 当前协程等待秒数
|
||||
* **WaitForFixedProcess**: 当前协程等待帧数
|
||||
* **IEnumerator**: 嵌套执行子协程, 等子协程执行完毕后才会继续执行后面的代码
|
||||
|
||||
协程`yield return`如果返回除以上数据类型以外的数据, 将忽略返回值
|
||||
|
||||
调用实例, 以下代码在`ActivityInstance`初始化时执行协程`StartRotation`, 协程在60帧内让物体每帧角度加1
|
||||
```csharp
|
||||
public override void OnInit()
|
||||
{
|
||||
StartCoroutine(StartRotation());
|
||||
}
|
||||
|
||||
private IEnumerator StartRotation()
|
||||
{
|
||||
for (int i = 0; i < 60; i++)
|
||||
{
|
||||
RotationDegrees += 1;
|
||||
//结束这一帧, 返回0会被忽略返回值
|
||||
yield return 0;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3.3.地牢房间
|
||||
#### 3.3.1.地牢房间概述
|
||||
|
||||
|
||||
#### 3.3.2.地牢生成规则
|
||||
|
||||
|
||||
#### 3.3.3.创建模板房间
|
||||
|
||||
|
||||
### 3.4.UI系统
|
||||
#### 3.4.1.UI系统概述
|
||||
|
||||
#### 3.4.2.UI代码生器
|
||||
|
||||
#### 3.4.3.常用功能
|
Loading…
Reference in New Issue
Block a user