当前位置: 首页 > news >正文

Godot-C#处理节点关系

Godot C#处理节点关系

简介

我们知道在游戏中,任何事物都可以看做一个节点,而节点之间的关系可以帮助我们更好的管理游戏世界。Godot中,节点之间的关系可以分为两种:父子关系和兄弟关系。godot已经提供了现成的方法来获取节点之间的关系,包括

根节点

根节点是游戏世界的最顶层节点,它没有父节点,也就是说它是游戏世界的根,我们称为root节点。整个游戏的所有场景都建立在root之上。因此根据root来查找节点通常是比较准确的。在开发过程中,个人建议是少用相对路径,万一节点位置发生了变化,那么相对路径就会失效。
获取方法:

Node root = GetTree().Root;

节点查找

Godot提供了查找节点的各种方法,包括按名字查找、按类型查找、按路径查找等。

父子关系&兄弟关系

兄弟关系通常指同级节点,也就是父节点的子节点。想获取同级节点,一般也是通过父节点查找子节点的方式
父节点可以有无数个子节点,但是子节点只能有单个父节点。父子关系是节点间最常用的关系,我们可以通过以下方法获取父子关系:

// 获取父节点
Node parent = this.GetParent();
// 获取子节点:仅查找一层,不会递归查找
Node child = parent.FindChild("child_name"); 

路径查找

GetNode 使用路径字符串来查找节点。路径字符串可以是相对路径或绝对路径。
例如,如果你有一个节点路径 "InputTest/SubNode",你可以使用 GetNode("InputTest/SubNode") 来直接获取 SubNode 节点,而不需要逐层查找。
GetNode 是严格且快速的查找方式,因为它直接根据路径定位节点,如果路径错误或者节点不存在,会抛出异常。

// 相对路径查找
Node node = this.GetNode("SubNode");
// 绝对路径查找
Node node = this.GetNode("path/to/node");
// 获取节点并转换为特定类型
Node2D node2D = this.GetNode("path/to/node") as Node2D;

示例

测试节点如图所示:img

using Godot;
using System;public partial class TestNodeRelation : Node2D
{public override void _Ready(){}public override void _Process(double delta){if (Input.IsActionJustPressed("Left")){GD.Print("按下左键");// 获取当前场景的根节点Node root = GetTree().Root;GD.Print("根节点名称: " + root.Name);// 获取当前场景Node currentScene = this.GetTree().CurrentScene;GD.Print("当前场景名称: " + currentScene.Name);// 查找当前场景下名为 InputTest 的子节点,需注意与GetNode方法的区别Node inputTest = currentScene.FindChild("InputTest");// 将 InputTest 节点从它的父节点移除,然后添加到当前节点下GD.Print("将 InputTest 节点移动到 TestNodeRelation 节点下");currentScene.RemoveChild(inputTest);this.AddChild(inputTest);// 删除 InputTest 节点// GD.Print("删除 InputTest 节点");// inputTest.QueueFree();}if (Input.IsActionJustPressed("Right")){GD.Print("按下右键");// 获取当前场景Node currentScene = this.GetTree().CurrentScene;// 新建节点Node2D newNode = new Node2D();// 设置节点名称newNode.Name = "NewNode";// 将新节点添加到当前场景下currentScene.AddChild(newNode);}}
}
http://www.rkmt.cn/news/24462.html

相关文章:

  • go 并发赋值安全性
  • 2025 年防撞钢护栏厂家推荐聊城市泰锌金属材料有限公司,桥梁,不锈钢,复合管,景观,灯光,热镀锌,河道,铝合金,绳索防撞钢护栏公司推荐
  • 三场比赛(二)
  • 2025年水产养殖设备厂家推荐排行榜,PP鱼池/微滤机/不锈钢微滤机/锦鲤池微滤机一体机/全自动污水过滤器/生物过滤器/循环水养殖系统公司推荐!
  • 预测不可预测之物的校准学习技术
  • 10.19日模考总结
  • 详细介绍:2020年美国新冠肺炎疫情数据分析与可视化
  • 微信小程序入门学习教程,从入门到精通,WXML(WeiXin Markup Language)语法基础(8) - 详解
  • Java 中 NullPointerException 的 3 个常见原因及解决
  • Java 方法参数传递:到底是值传递还是引用传递?
  • centos 7.9快速部署ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统用于信息收集
  • HTML5中常用的布局语义标签
  • Jupyter直接转pdf
  • list 实现链表封装节点的底层逻辑:如何克服不连续无法正常访问挑战 - 详解
  • 音视频编解码全流程之用Extractor后Decodec - 实践
  • P8817 [CSP-S 2022] 假期计划 解题笔记
  • 【动手学深度学习PyTorch】softmax回归 - 实践
  • 24_envoy_配置静态资源路由
  • 2025年冷却塔厂家推荐排行榜,闭式/方形/工业/全钢/凉水/圆形/玻璃钢/防腐冷却塔公司推荐!
  • AT_toyota2023spring_final_g Git Gud
  • 2025年中医师承与确有专长培训机构推荐榜单:权威认证,传承经典,专业师资助力中医梦想!
  • 从数学概念到图像识别,再到 CNN 的联系
  • 2025流量计厂家推荐弗罗迈测控,高精度耐腐蚀多种类选择!
  • 2025防水篷布优质厂家推荐:成硕达塑业多功能产品覆盖多领域!
  • 2025彩钢制品优质厂家推荐:腾越彩钢,一站式钢结构解决方案!
  • SQL中BOM递归查询语句
  • ICCV 2025 (Highlight) Being-VL:师夷长技,用NLP的BPE算法统一视觉语言模型 - 实践
  • 豆一
  • CF *3000 数据结构题
  • 2025年钢材厂家推荐排行榜,方钢/扁钢/圆钢/光轴/六角钢/异型钢/冷拉冷拔钢材/热轧钢材,Q355B/Q345B/16Mn/45#/40Cr/A3/Q235B钢公司精选