我不确定这个问题是否应该在这个子频道中问,可能我应该在OOP子频道中问,但是我觉得游戏代码可能并不完全遵循Vanilla OOP规则,所以我决定在这里问。
基本上,我正在Godot中工作一个简单的项目,但是我对于是否应该在类中还是在对象中分配值感到困惑,尤其是在使用像RandomNumberGenerator这样的类时。从我看到的其他人的代码中看来,通常会在类中实例化RandomNumberGenerator(也就是说,在任何方法之外)。问题是,根据我的OOP的好习惯,属性不应该实际上被分配。您在类中分配属性的内存,然后在构造函数或其他类型的初始化方法中分配属性的值。
我想专注于我的主要学位(在未来,我仍然是一名本科生)的内存优化,所以我想学习最佳实践的内存分配和OOP。
extends Node2D
@export var speed := 1
var size: Vector2
var rng: RandomNumberGenerator
var sprite_number: int
var sprite: Texture
var tween: Tween
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
rng = RandomNumberGenerator.new()
sprite_number = rng.randi_range(1, 4)
sprite = load("res://graphics/Star" + str(sprite_number) + ".png")
size = get_tree().current_scene.get_viewport().get_visible_rect().size
tween = create_tween().set_loops()
$Sprite2D.texture = sprite
翻译成简体中文:
我不确定这个问题是否应该在这个子频道中问,可能我应该在OOP子频道中问,但是我觉得游戏代码可能并不完全遵循Vanilla OOP规则,所以我决定在这里问。
基本上,我正在Godot中工作一个简单的项目,但是我对于是否应该在类中还是在对象中分配值感到困惑,尤其是在使用像RandomNumberGenerator这样的类时。从我看到的其他人的代码中看来,通常会在类中实例化RandomNumberGenerator(也就是说,在任何方法之外)。问题是,根据我的OOP的好习惯,属性不应该实际上被分配。您在类中分配属性的内存,然后在构造函数或其他类型的初始化方法中分配属性的值。
我想专注于我的主要学位(在未来,我仍然是一名本科生)的内存优化,所以我想学习最佳实践的内存分配和OOP。
extends Node2D
@export var speed := 1
var size: Vector2
var rng: RandomNumberGenerator
var sprite_number: int
var sprite: Texture
var tween: Tween
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
rng = RandomNumberGenerator.new()
sprite_number = rng.randi_range(1, 4)
sprite = load("res://graphics/Star" + str(sprite_number) + ".png")
size = get_tree().current_scene.get_viewport().get_visible_rect().size
tween = create_tween().set_loops()
$Sprite2D.texture = sprite
评论 (0)