首页 > 其他分享 >Godot 4.1 学习笔记

Godot 4.1 学习笔记

时间:2024-03-13 22:46:28浏览次数:24  
标签:Godot 场景 4.1 HealthBar 笔记 访问 UniqueHealthBar 节点 名称

godot % 启用场景唯一名称 这个怎么用的,给我举点例子。
onready var sect_rect = $"%SectRect
这个节点可以在场景中的任意位置通过在节点路中为其加上”%”前缀来访问。
点击禁用。 什么“场景中的任意位置通过在节点路中”???



好的,用更具体的例子来说明如何在Godot中使用%前缀来访问具有唯一名称的节点。

场景结构示例

假设我们的Godot项目有一个场景,场景结构如下:

  • MainScene
    • Player (玩家节点)
    • Enemies (敌人容器节点)
      • Enemy1 (敌人1)
      • Enemy2 (敌人2)
    • UI
      • HealthBar (生命条)
      • Score (分数)
        在这个场景中,假设我们想要在不同的脚本中访问HealthBar节点,但是由于游戏开发过程中的变动,HealthBar的位置可能会发生变化。为了方便地访问它,我们可以给HealthBar设置一个唯一名称。

设置唯一名称

在Godot编辑器中,选中HealthBar节点,然后在节点的属性面板中找到“节点”部分下的“名称”字段,输入一个唯一标识符,比如UniqueHealthBar。这个名称就是我们将要使用%前缀来引用的唯一名称。

使用%前缀访问节点

现在,无论HealthBar在场景树中的具体位置如何变化,我们都可以在任何脚本中通过以下方式访问它:

# 使用唯一名称和%前缀来获取HealthBar节点的引用
onready var health_bar = $"%UniqueHealthBar"

这行代码意味着,不管HealthBar节点在场景树中的位置如何变化,只要它的唯一名称是UniqueHealthBar,我们就可以通过%UniqueHealthBar来找到它,并将其存储在health_bar变量中。

访问示例

假设你想在玩家受到伤害时更新生命条,你可以这样做:

func take_damage(amount):
    health_bar.value -= amount  # 假设health_bar有一个'value'属性表示生命值

在这个例子中,即使HealthBar的位置在场景树中改变,或者我们从另一个场景中访问它,使用%UniqueHealthBar都能保证我们正确无误地引用到HealthBar节点。
通过这种方式,%前缀成为了访问场景中具有唯一名称节点的强大工具,大大提高了代码的灵活性和可维护性。希望这个例子能帮助你更好地理解如何使用%前缀来访问节点。



####直接在其他场景里面 %UniqueHealthBar.value -=amount ??
直接在其他场景中使用 `%UniqueHealthBar.value -= amount` 这种方式来访问和修改节点可能会有一些误解。实际上,即使是使用唯一名称访问节点,也需要在脚本中先获取该节点的引用,然后才能对其进行操作。这是因为Godot中的脚本通常是附着在特定的场景或节点上的,因此你需要在该脚本或相关联的脚本中明确引用节点。 以下是一个在其他场景中安全访问和操作具有**唯一名称`UniqueHealthBar`节点**的方法: ### 第一步:在新场景的脚本中获取节点引用 在你的新场景中,比如一个叫`SecondScene`的场景,假设你想根据某些事件改变`HealthBar`的值。首先,你需要在这个场景的脚本文件中获取`UniqueHealthBar`节点的引用。通常这是通过`onready`关键字完成的,以确保场景完全加载后才访问节点: ```gdscript # 在SecondScene的脚本中 onready var health_bar = $"%UniqueHealthBar" ``` ### 第二步:修改节点属性 获取节点引用后,你就可以像在原始场景中一样操作这个节点了: ```gdscript func decrease_health(amount): health_bar.value -= amount ``` 这个函数`decrease_health`可以根据你的需要在游戏逻辑中被调用,以减少生命值。 ### 注意点: - 确保新场景被加载和实例化时,带有唯一名称`UniqueHealthBar`的节点是存在的。否则,`$"%UniqueHealthBar"`将返回`null`,尝试访问`null`引用的属性会导致运行时错误。 - `%UniqueHealthBar`的方式是全局性的,适用于项目内的任何场景,只要这些场景在运行时是处于活跃状态的,并且节点名称没有重复。 通过这种方式,你可以在项目中任何地方访问和修改具有唯一名称的节点,而不用担心节点在场景树中的具体位置。但请记得,这种方法依赖于项目内部节点名称的唯一性和节点在访问时的存在性。

意思就是 有唯一的 UniqueHealthBar 节点

标签:Godot,场景,4.1,HealthBar,笔记,访问,UniqueHealthBar,节点,名称
From: https://www.cnblogs.com/MinervaZhang/p/18071728

相关文章

  • datawhale-动手学数据分析task2笔记
    动手学数据分析task2数据清洗及特征处理缺失值观察与处理.isnull()和.isna()可判断表中所有缺失值,缺失值处为True,优先用.isna()。.isna().sum()可以获得columns的缺失值数量。.info()可以获得dataframe中columns的non-null值,从而推断出缺失值数量。.dropna()方法可......
  • 大一下计算系统基础笔记
    大一下计算系统基础笔记W21.补码计算溢出的判断:a的补码+b的补码=(a+b)的补码最高位和次高位只有一个进位的时候,才有溢出,其余情况没有溢出,结果都正确最简单的理解方式:正数+正数,负数+负数,如果符号变了就溢出了正+负永远不溢出从原理上来看,计算机用补码表示数字,只有最高位进位没......
  • Java基础笔记
    jdk、jre、jvm三者之间的关系Java语言开发程序能够做到一次编写处处运行(能够跨平台运行)java中的注释  Java中的关键字和保留字  ......
  • Adaptive Diffusion in Graph Neural Networks论文阅读笔记
    AdaptiveDiffusioninGraphNeuralNetworks论文阅读笔记Abstract​ 最近提出了图扩散卷积(GDC),利用广义图扩散来扩展传播邻域。然而,GDC中的邻域大小是通过在验证集上进行网格搜索来手动对每个图进行调整的,这使得其泛化实际上受到了限制。为了解决这个问题,我们提出了自适应扩散......
  • 选择、冒泡、插入排序——左神数据结构算法Day1学习笔记
    时间复杂度:算法的常数操作数量级的数学表达式中,去除常数的最高阶项,比如aN²+bN+c的时间复杂度就是O(N²)。时间复杂度是数据量大到一定程度时,评价算法优劣的指标。当时间复杂度相同时,分析不同数据样本下的实际运行时间来比较算法的优劣。额外空间复杂度:在执行代码过程中申请的......
  • 高等代数笔记:克莱姆法则(Cramer)
    目录线性方程组何时有解求线性方程组的唯一解线性方程组何时有解先说结论:克莱姆法则用于n元线性方程组求解.数域K上n个方程的n元线性方程组:\[\begin{cases}a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1,\\a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_2,\\...\\a_{n1}x_1+a_{n2}x_2+........
  • 清风数学建模论文写作方法学习笔记
    标题对论文题目的要求是:简短精炼、高度概括、准确得体、恰如其分。既要准确表达论文内容,恰当反映所研究的范围和深度;又要尽可能概括、精炼,力求题目的字数少。论文题目的字数一般不要超过20个字。不过,当希望题目字数少与恰当反映论文内容两者发生矛盾时,宁可多用几个字也要力......
  • 萌新的莫反练习笔记
    萌新的莫反练习笔记简单的数论函数恒等函数\(I(n)=1\)。元函数\(e(n)=[n=1]\)。单位函数\(id(n)=n\)。狄利克雷卷积我们设\(f\)和\(g\)的卷积\(f\astg=F\)。卷积还是一个函数。那么,\(F(n)=\sum_{d|n}f(d)g(\frac{n}{d})\)。这就是卷积。显然,\(e\astf=f\)。所以......
  • CSRF&SSRF练习(自用笔记)
    什么是CSRFCSRF(Cross-siterequestforgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。一个典型的CSRF攻击有着如下的流......
  • 89C52RC定时器(自用复习笔记)
    一、定时器作用(1)用于计时系统,可实现软件计时,或者使用程序每隔一固定时间完成一项操作。(2)替代长时间的Delay,提高CPU的运行效率和处理速度。(3)...操作系统任务切换,多任务执行。二、定时器资源定时器个数:3个(T0、T1、T2),T0,T1与传统51单片机兼容。三、定时器工作原理定时器......