Godot学习03 - 实例化、层级访问、Export

接下来我们将继续探索 Godot 的操作:实例化场景、访问节点层级以及使用 export 导出变量。

1.实例化

在Godot中没有Prefab或蓝图的概念,每个场景tscn文件都可以动态加载、实例化创建。例如新建一个名为bullet的tscn场景:

新建csharp脚本BallSpawn:

csharp 复制代码
using Godot;
using System;

public partial class BallSpawn : Node3D
{
	private PackedScene _bulletScene;
	
	public override void _Ready()
	{
		_bulletScene = GD.Load<PackedScene>("res://bullet.tscn");
		GenerateRandomBalls();
	}
	
	private void GenerateRandomBalls()
	{
		Random random = new Random();
		
		for (int i = 0; i < 10; i++)
		{
			Node3D bullet = (Node3D)_bulletScene.Instantiate();
			
			// 在半径为1的球体内生成随机位置
			float x = (float)(random.NextDouble() * 2 - 1);  // -1 到 1
			float y = (float)(random.NextDouble() * 2 - 1);  // -1 到 1
			float z = (float)(random.NextDouble() * 2 - 1);  // -1 到 1
			
			// 归一化到半径为1的球体内
			Vector3 randomPos = new Vector3(x, y, z);
			
			// 如果要在球体表面生成:
			// randomPos = randomPos.Normalized();
			
			bullet.Position = randomPos;
			
			AddChild(bullet);
		}
	}
}

将该脚本挂载到根节点上,点运行即可看见实例化出了10个小球。

2.层级访问

godot与其他游戏引擎不同,提供了较便捷的层级访问接口,可以快速定位到对应节点。

csharp 复制代码
using Godot;
using System;

public partial class Test01 : Node3D
{
	public override void _Ready()
	{
		var deepNode = GetNode("child01/child02");
		GD.Print(deepNode.Name);
	}
}

如果是获取父节点:

csharp 复制代码
public override void _Ready()
{
    // 获取父节点
    var parent = GetNode("..");
    // 获取父节点的父节点(祖父节点)
    var grandParent = GetNode("../..");
    // 获取更上层的节点
    var greatGrandParent = GetNode("../../..");
    
    // 打印节点名称
    GD.Print($"父节点: {parent.Name}");
    GD.Print($"祖父节点: {grandParent?.Name}");
}

3.Export

godot中,需要对编辑器公开的参数可标记Export去辨识。

相关推荐
AI360labs_atyun15 小时前
清华开源AI导师OpenMAIC!30秒生成互动课堂!还能学“养龙虾”
人工智能·科技·学习·ai
学机械的鱼鱼15 小时前
【学习笔记】QGroundControl安装与使用简明指南
笔记·学习
zhangrelay15 小时前
Ubuntu 18.04 经典 / 有趣 / 实用 APT 软件清单
linux·笔记·学习·ubuntu
FserSuN15 小时前
Machine Learning Specialization - Week 1, 1-8学习总结
人工智能·学习·机器学习
鸟儿不吃草15 小时前
安卓实现左右布局聊天界面
android·开发语言·python
chnyi6_ya15 小时前
论文笔记 | RefineAnything:面向完美局部细节的多模态区域精细化
论文阅读·人工智能·学习
YangYang9YangYan15 小时前
2026经济学专业学习数据分析的价值分析
学习·数据挖掘·数据分析
red_redemption16 小时前
自由学习记录(176)
学习
hello_读书就是赚钱16 小时前
提示词工程学习笔记
笔记·学习
Flandern111116 小时前
# 学习AI Agent中了解到的几个概念
人工智能·学习