Kome
1
您好,
关于GameScene,如果游戏是按第1关、第2关这样的方式推进,那么是否应该为每一关分别构建独立的GameScene(如GameScene_第1关、GameScene_第2关),并在其中配置各个对象?
如果上述理解正确,那么对于角色等对象(场景)附加的VisualScript,大多数情况下是否选择“内置脚本”更为合适?如果不将VS附加到第1关的player上,那么配置在第2关的player上时,该player将不会附带VS……虽然可以将第1关的VS附加到第2关的player上,但对于像player这样数量较少的角色或许可行,但对于大量出现的敌人来说则非常不便。
听说内置脚本存在一些限制,因此希望能请教一下内置VS与非内置VS各自的使用场景。
是的。每个 GameScene 作为一个文件。Godot 项目结构。
文件夹名和文件名请使用 snake_case。
示例文件夹结构
project 📁
scenes 📁
game_scene_1.tscn 🎬
game_scene_2.tscn 🎬
game_scene_3.tscn 🎬
game_objects 📁
player 📁
player.tscn # GameObject
player.vs
enemies 📁
slimes 📁
slime_1.tscn # GameObject
slime_2.tscn
slime.vs
存储在 .tscn 文件中:
[sub_resource type="VisualScript" id="VisualScript_o1b1i"]
data = {
"any_state_pos": Vector2(0, 0),
"base_type": &"GameObject",
"is_created_first_action_node": true,
"nodes": [
0, Vector2(-26.6667, 106.667), SubResource("VisualScriptAction_06ixh"),
1, Vector2(186.667, 80), SubResource("VisualScriptAction_jgf6y"),
2, Vector2(0, 0), SubResource("VisualScriptActionLink_d6fgq"),
3, Vector2(0, 0), SubResource("VisualScriptActionLink_siowv"),
4, Vector2(0, 0), SubResource("VisualScriptActionLink_rupok")],
"scroll": Vector2(-49.3939, -398)
}
适合原型开发。长期来看并不理想。
| 游戏场景 |
游戏对象 |
菜单场景 |
实例化的游戏对象「内置脚本」 |
| GameScene |
GameObject |
MenuScene |
带有内置脚本的实例化 GameObject |
|  |
 |
 |
 |
 |
 |
|  |
 |
我只会在 GameObject 场景的 .tscn 文件中使用内置脚本。我认为这不是良好的实践。我仅在一次性原型开发中使用它。
希望这对你有帮助。
1 个赞
Kome
3
谢谢,Brasten。
在我正在重新编辑原始问题文本时,收到回复让我感到惊讶。感谢您细致的解释,甚至专门制作了表格。我不是很聪明,所以仍然无法理解,但我会花时间仔细查看并思考您教给我的内容。感谢您的回复。
Kome
4
谢谢,Brasten。
关于前半部分在项目文件夹中构建场景的内容,我已经理解了。
确实,需要为每个舞台(关卡)增加 game_scene,非常感谢。
关于后半部分的嵌入式脚本,
虽然您特意用图片以表格形式进行了说明,但我还是觉得有些难以理解。
不过,我至少明白了除了原型对象之外,最好不要使用嵌入式脚本这一点。
我会慢慢学习。非常感谢。