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去辨识。

相关推荐
李李李勃谦4 小时前
Flutter 框架跨平台鸿蒙开发 - 创意灵感收集
android·flutter·harmonyos
aWty_4 小时前
实分析入门(1)--皮亚诺和自然数
学习
weixin_513449965 小时前
walk_these_ways项目学习记录第八篇(通过行为多样性 (MoB) 实现地形泛化)--策略网络
开发语言·人工智能·python·学习
LX567775 小时前
传统编辑如何考取AI内容编辑师认证?学习路径详解
人工智能·学习
songyuc5 小时前
BM2『链表内指定区间反转』学习笔记
学习·链表
L1624765 小时前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes
王家视频教程图书馆5 小时前
godot 下载地址
游戏引擎·godot
weixin_513449966 小时前
walk_these_ways项目学习记录第七篇(通过行为多样性 (MoB) 实现地形泛化)--核心环境下
人工智能·python·学习
fengci.6 小时前
ctfshow其他(web396-web407)
android