实例化场景后的 _init()
_init() after instancing a scene
我有两个场景。一个作为class的混乱场景和一个引发所有混乱的s场景
Disorder.gd
extends Node2D
var disorder_name
var disorder_cause
#-----------------Vitals------------------------
var pulse
var O2
var respirations
var systolic
var diastolic
var temperature
var blood_sugar
func _init(disorder_name, cause, pulse = 0, O2 = 0, respirations = 0, systolic = 0, diastolic = 0, temperature = 0, blood_sugar = 0):
disorder_name = disorder_name
disorder_cause = cause
pulse = pulse
O2 = O2
respirations = respirations
systolic = systolic
diastolic = diastolic
temperature = temperature
blood_sugar = blood_sugar
Disorders.gd
extends Node2D
var disorder = preload("res://Scenes/Disorder.tscn")
func _ready():
var influenza = disorder.instance()
influenza._init(temperature = 5)
我明白了
error(7, 30): Unexpected assign.
我不确定如何 _init()
Disorders
中的 Disorder
class 才能根据 Disorder
实例仅分配受影响的参数.
temperature = 5
会使人的正常体温增加 5 度
GDScript 不支持命名参数.
这意味着你不能跳过它们。
如果你真的想去做,你可以使用字典:
func _init(disorder_name, cause, params := {}):
self.disorder_name = disorder_name
self.disorder_cause = cause
pulse = params.get("pulse", 0)
O2 = params.get("O2", 0)
respirations = params.get("respirations", 0)
systolic = params.get("systolic", 0)
diastolic = params.get("diastolic", 0)
temperature = params.get("temperature", 0)
blood_sugar = params.get("blood_sugar", 0)
你会这样使用:
var influenza = disorder.instance()
influenza._init("influenza", cause, {temperature = 5})
我不知道你会穿什么 cause
,但请注意它不是可选的。
但是,鉴于您的默认值为零,在 _init
之后设置它们会简单得多。所以 _init
可以是:
func _init(disorder_name, cause):
self.disorder_name = disorder_name
self.disorder_cause = cause
然后:
var influenza = disorder.instance()
influenza._init("influenza", cause)
influenza.temperature = 5
当然,您可以在声明中设置默认值,例如:
var pulse = 0
类似地,我想指出 GDScript 支持类型。使用它们。
这是一个变体:
var pulse
这是一个变体,值为 0
(int):
var pulse = 0
这是一个变体,值为 0
(浮点数):
var pulse = 0.0
这是一个浮点数,值为 0
:
var pulse:float = 0
这是一个整数值 0
:
var pulse:int = 0
这是一个浮点数,值为 0
(默认值):
var pulse:float
这是一个整数值0
(默认值):
var pulse:int
这是一个值为 0
的整数(使用类型推断):
var pulse := 0
这是一个值为 0
的浮点数(使用类型推断):
var pulse := 0.0
我有两个场景。一个作为class的混乱场景和一个引发所有混乱的s场景
Disorder.gd
extends Node2D
var disorder_name
var disorder_cause
#-----------------Vitals------------------------
var pulse
var O2
var respirations
var systolic
var diastolic
var temperature
var blood_sugar
func _init(disorder_name, cause, pulse = 0, O2 = 0, respirations = 0, systolic = 0, diastolic = 0, temperature = 0, blood_sugar = 0):
disorder_name = disorder_name
disorder_cause = cause
pulse = pulse
O2 = O2
respirations = respirations
systolic = systolic
diastolic = diastolic
temperature = temperature
blood_sugar = blood_sugar
Disorders.gd
extends Node2D
var disorder = preload("res://Scenes/Disorder.tscn")
func _ready():
var influenza = disorder.instance()
influenza._init(temperature = 5)
我明白了
error(7, 30): Unexpected assign.
我不确定如何 _init()
Disorders
中的 Disorder
class 才能根据 Disorder
实例仅分配受影响的参数.
temperature = 5
会使人的正常体温增加 5 度
GDScript 不支持命名参数.
这意味着你不能跳过它们。
如果你真的想去做,你可以使用字典:
func _init(disorder_name, cause, params := {}):
self.disorder_name = disorder_name
self.disorder_cause = cause
pulse = params.get("pulse", 0)
O2 = params.get("O2", 0)
respirations = params.get("respirations", 0)
systolic = params.get("systolic", 0)
diastolic = params.get("diastolic", 0)
temperature = params.get("temperature", 0)
blood_sugar = params.get("blood_sugar", 0)
你会这样使用:
var influenza = disorder.instance()
influenza._init("influenza", cause, {temperature = 5})
我不知道你会穿什么 cause
,但请注意它不是可选的。
但是,鉴于您的默认值为零,在 _init
之后设置它们会简单得多。所以 _init
可以是:
func _init(disorder_name, cause):
self.disorder_name = disorder_name
self.disorder_cause = cause
然后:
var influenza = disorder.instance()
influenza._init("influenza", cause)
influenza.temperature = 5
当然,您可以在声明中设置默认值,例如:
var pulse = 0
类似地,我想指出 GDScript 支持类型。使用它们。
这是一个变体:
var pulse
这是一个变体,值为 0
(int):
var pulse = 0
这是一个变体,值为 0
(浮点数):
var pulse = 0.0
这是一个浮点数,值为 0
:
var pulse:float = 0
这是一个整数值 0
:
var pulse:int = 0
这是一个浮点数,值为 0
(默认值):
var pulse:float
这是一个整数值0
(默认值):
var pulse:int
这是一个值为 0
的整数(使用类型推断):
var pulse := 0
这是一个值为 0
的浮点数(使用类型推断):
var pulse := 0.0