自定义生命值药水

Tutorial

Beginner

+0XP

25 mins

(131)

Unity Technologies

自定义生命值药水

在本教程中,你将运用先前所学的知识来完成以下任务:

  • 创建自定义生命值效果脚本
  • 查看模板脚本的内容
  • 编写新指令来提升玩家的生命值点数 (HP)
  • 将 HP 增加值更改为公共变量

完成后,你将在创作者套件游戏中编写出生命值药水的自定义效果!

Languages available:

1. 自定义玩家体验

你现在已探索了关于为 Unity 编写 C# 脚本的基本概念,接下来便可以开始编写一些游戏玩法的脚本了!

在本教程中,你将为这些药水编写一种效果,使药水在使用后为玩家角色增加 10 个生命值点数。

2. 创建并打开新的脚本文件

在此创作者套件中,有一个简单模板脚本可用于编写游戏物品的效果。

要基于模板创建并打开新脚本,请执行以下操作:

1. 在顶部菜单中,选择 Beginner Code > Create Item Effect



2.输入不带空格的名称(例如,“AddHealthEffect”),然后选择 Create

3. 在 Project 窗口中,选择 Assets/Creator Kit - Beginner Code/Scripts/ItemEffects

4.双击 AddHealthEffect.cs 脚本文件,从而在脚本编辑器中打开此文件。

基本代码如下所示:

using System.Collections;
using System.Collections.Generic;
using CreatorKitCode;
using UnityEngine;

public class AddHealthEffect : UsableItem.UsageEffect
{
    public override bool Use(CharacterData user)
    {
        return false;
    }
}

3. 查看模板脚本的内容

让我们利用目前为止所学的所有知识来查看这个小脚本中的元素:

  • 第 1 至 4 行以 using 开始;与以前一样,你可以忽略它们。
  • 第 6 行是一个类声明,其名称与你为效果提供的名称相同。这一项是对话窗口为你添加的。

此新类是从名为 UsableItem.UsageEffect 的另一个类(这是专为此创作者套件编写的类,用于控制与游戏中物品相关的所有事项)派生的。这个新类提供了这些效果所需的通用代码,并让你专注于所选效果的特定功能。

Use 函数

第 8 行是对 Use 函数的声明。让我们来分解该函数:

  • Use 是一个布尔型公共函数。布尔变量类型存储两个布尔值之一:true 或 false。

  • 这个函数的声明中有一个我们不熟悉的关键字:override。顾名思义,该关键字用于覆盖基类 (UsableItem.UsageEffect) 中的同名函数。因此,你可以编写适用于任何 Use 函数的通用代码。

使用一个对象时,该函数将被游戏调用并执行其中的所有指令。返回结果是布尔值,因为游戏将检查是否已使用该对象;如果已使用,则会从背包中删除该对象。


此功能使你可以在玩家的生命值处于全满状态时返回 false,因此不会使用药水。

4. 将此效果添加到生命值药水

现在,脚本存在于 Assets 文件夹中,已经过编译,并成为游戏代码的一部分。这意味着你已经可以将其分配给游戏中的生命值药水:

1.返回到 Unity 编辑器。


2.在 Project 窗口中,选择 Assets/Creator Kit - Beginner Code/Prefabs/ItemDatabase。选择 Potion 预制件。

3.在 Inspector 中,使用 Add New Effect 下拉菜单来选择 AddHealthEffect。此脚本将显示在下面的 Script 字段中。


4.
Description 字段中,添加效果的描述(例如,“Gives 10 HP”)。

出现此字段的原因是,基类具有一个用于填充 Inventory UI 的 description 变量,而由于你的效果是从此类派生的,因此也具有 Description 字段。

5.Ctrl + S (Windows) 或 Cmd + S (macOS) 来保存更改。

5. 编写效果函数

现在,你需要返回到 AddHealthEffect 脚本并实际编写效果函数!

让我们来看看该函数需要完成什么操作以及你可以使用的工具。

创作者套件 StatSystem

此创作者套件有一个特殊的 StatSystem 系统来控制角色的统计信息。将 CharacterData 脚本作为组件附加到某个游戏对象后,该游戏对象即可访问创作者套件的 StatSystem


你可以使用 ChangeHealth() 函数来更改角色的生命值。此函数可以更改装备了 StatSystem 的游戏对象的生命值。

该函数需要完成什么操作?

为了在玩家角色使用生命值药水时更改玩家角色的生命值,效果函数需要:

1.访问玩家的 CharacterData 脚本。

2.使用点运算符来访问 Stats 类。

3.使用点运算符来访问 Stats 内包含的 ChangeHealth() 函数。

4.传入一个 int 值(作为该函数的参数)以声明将恢复玩家角色的多少生命值。

该函数还应该以“return true;”(而不是“return false;”)结尾;这个游戏物品将被消耗掉,并从玩家的背包中消失。

挑战:编写函数


尝试使用点运算符来编写效果函数,然后继续下一步以查看答案。如果你没有信心独立完成这项挑战,可以继续下一步以查看答案。

6. 检查效果函数

效果函数应如下所示:

public class AddHealthEffect : UsableItem.UsageEffect
{
    public override bool Use(CharacterData user)
    {
        user.Stats.ChangeHealth(10);
        return true;
    }
}

7. 将生命值更改为变量

现在尝试将生命值的增加值更改为变量。请参考以下信息:

  • 该变量类型应该为 int,需要存储整数值。
  • 将该变量作为 public 变量,这意味着它将在 Unity 编辑器中显示为一个 Inspector 字段。
  • Use 函数声明上方声明该变量。

提示:如果遇到困难,请查看变量简介,并将相关内容作为帮助参考。

尝试进行此替换后,请继续下一步以查看答案。

8. 检查你的脚本更改

你调整后的脚本应如下所示:

public class AddHealthEffect : UsableItem.UsageEffect
{
    public int HealthAmount;

    public override bool Use(CharacterData user)
    {
        user.Stats.ChangeHealth(HealthAmount);
        return true;
    }
}


Ctrl + S (Windows) 或 Cmd + S (macOS) 来保存更改。


现在可以从 Unity 编辑器中编辑此变量:


1.
在 Inspector 中,应该会在 Description 字段下看到一个公开此变量的 Health Amount 字段:

2.更改相应的值,然后按 Ctrl + S (Windows) 或 Cmd + S (macOS) 来保存更改。

3.Play 以进入运行模式并测试所做的游戏更改。

就是这样,你的任务完成!

9. 教程总结

在本教程中,你已运用此项目的知识来完成以下任务:

  • 创建自定义生命值效果脚本
  • 编写新指令来提升玩家的生命值点数 (HP)
  • 使 HP 增加值成为可以在 Unity 编辑器中更改的变量

恭喜,你已经为 Unity 编写第一个 C# 代码,并完成了主要的“创作者套件:初学者代码”教程!

还停留在 Rancho Rodadora?

你已经完成本学习项目中的主要教程,但是还有更多的探索空间。

最后一个教程是参考指南,指导你如何使用我们专为此创作者套件创建的脚本模板来自定义游戏。你可以使用这些脚本模板来创建一系列不同的游戏物品和效果。

准备好学习更多内容?

“创作者套件:初学者代码”只是你的 Unity 和 C# 脚本学习之旅的起点!

下一次学习探险有两个不同选择:

Complete this Tutorial