Godot数据角色分离设计
本文最后更新于94 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

角色数据类(character_data.gd)

角色应该有一套数据模板,此时可以定义一个CharacterData类,令其继承至Resource类。此时这个类:

  • 1. 可序列化 – 可以保存到文件
  • 2. 可复用 – 一个资源可以被多个场景/节点共享
  • 3. 编辑器友好 – 在检查器中直接编辑
  • 4. 内存高效 – 引用计数,不会重复加载
  • 5.可以保存为.tres文件直接在编辑器内修改并在任何地方可以服用定义好的.tres文件, 比如”英雄”模板, “哥布林”模板. 把这些模板的数据直接赋给新角色.
extends Resource
class_name CharacterData

@export var character_name: String = "英雄"
@export_multiline var description: String = "一个勇敢的战士。"

@export_group("核心属性")
@export var max_hp: int = 100
@export var current_hp: int = 100
@export var max_mp: int = 50
@export var current_mp: int = 50
@export var attack: int = 10
@export var defense: int = 5
@export var speed: int = 7

@export_group("视觉表现")
@export var color: Color = Color.BLUE  # 为原型阶段设置的角色颜色

其中@export用于直接在右侧“检查器”修改数值


场景中角色部分(CharacterScene/Character.gd)

extends Node2D
class_name Character

@export var character_data: CharacterData

# 运行时从CharacterData初始化的核心战斗属性
var character_name: String
var current_hp: int
var max_hp: int
var current_mp: int
var max_mp: int
var attack: int
var defense: int
var speed: int

# 引用场景中的节点
@onready var hp_label = $Container/HPLabel
@onready var name_label = $Container/NameLabel
@onready var character_rect = $Container/CharacterRect

extends Node2D表示这是一个要在场景中显示和交互的脚本,全局中注册为Character。@export var character_data: CharacterData是为了能在右边编辑器创建一栏,能把现有的.tres角色模板拖进去。
用@onready在初始化时就将变量名“hp label”等绑定到这些子节点上以便后面的函数能够修改这些节点。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇