Skip to main content

Godot备忘

资料

安装

# Windows
scoop install godot

记录

关于类型

  1. get_class返回的是基类的类型名,而不是本类class或者class_name声明的.
Object.get_class
● String get_class() const

返回对象的类型为一个String。参见is_class()。

注意: get_class() 不考虑class_name的声明。如果对象有一个class_name的定义,基类名称将被返回。

比如如下代码,输出的是Reference而不是A

extends Control

func _ready():
var a = A.new()
a.test()

class A:
func test():
print(self.get_class())
  1. is_class
Object.is_class
● bool is_class(class: String) const

如果对象从给定的 class 中继承,则返回 true 。另请参阅 get_class()。

注: is_class() 没有考虑 class_name 声明。如果对象有 class_name 定义,is_class() 将为该名称返回 false 。

同理,is_class可以判断是否某基类继承下来的,但是不能直接判断本类.

比如如下代码,输出的是False True而不是True True

extends Control

func _ready():
var a = A.new()
a.test()

class A:
func test():
print(self.is_class('A'))
print(self.is_class('Reference'))
  1. get_script 如果需要判断自定义的类型,可以用get_script
Object.get_script
● Reference get_script() const

返回该对象的Script实例,如果没有指定,则返回null。

比如下面的代码,输出A

extends Control

func _ready():
var a = A.new()
match a:
A: print('A')
B: print('B')
_: print('unknown')

class A:
func test():
print(self.is_class('A'))
print(self.is_class('Reference'))

class B:
pass

关于实例化

  1. preload的结果是PackedScene类型
  2. instancePackedScene的方法
  3. instance之后,要在被add_child之后才会调用_ready,所以这之前可以做一些事情,比如设置参数:
var Scene = preload('res://path/to/scene')
var scene = Scene.instance
scene.property1 = value1
scene.property2 = value2

add_child(scene) # _ready在这之后调用

关于定时器

  • Timer
  • SceneTreeTimer

问题

fastgithub冲突

在开启fastgithub的情况下,素材库的内容是下载不了的: 关闭fastgithub可以随缘下载,当然,有靠谱的梯子是最好不过了.