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

相关推荐
青桔柠薯片1 小时前
51单片机(STC89C52RC)学习总结:从裸机编程到外设驱动
嵌入式硬件·学习·51单片机
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于Android的便民系统的设计与实现为例,包含答辩的问题和答案
android
鬼蛟2 小时前
Spring————事务
android·java·spring
今儿敲了吗2 小时前
python基础学习笔记第六章——函数进阶
笔记·python·学习
2501_918126913 小时前
学习所有6502写游戏动画的语句
汇编·嵌入式硬件·学习·程序人生·游戏
qq_170264753 小时前
unity出安卓年龄分级的arr包问题
android·unity·游戏引擎
-Springer-3 小时前
STM32 学习 —— 个人学习笔记9-3(FlyMcu 串口下载)
笔记·stm32·学习
weixin_458872614 小时前
东华复试OJ每日3题打卡·复盘103~105
学习
SuniaWang4 小时前
《Spring AI + 大模型全栈实战》学习手册系列 ·专题三:《Embedding 模型选型指南:从 MMTEB 排名到实际应用》
人工智能·学习·spring