Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

RefCounted

Eredita: Object

Ereditato da: AESContext, AStar2D, AStar3D, AStarGrid2D, AudioEffectInstance, AudioSample, AudioSamplePlayback, AudioStreamPlayback, CameraFeed, CharFXTransform, ConfigFile, Crypto, DirAccess, DTLSServer, EditorContextMenuPlugin, EditorDebuggerPlugin, EditorDebuggerSession, EditorExportPlatform, EditorExportPlugin, EditorExportPreset, EditorFeatureProfile, EditorFileSystemImportFormatSupportQuery, EditorInspectorPlugin, EditorResourceConversionPlugin, EditorResourcePreviewGenerator, EditorResourceTooltipPlugin, EditorSceneFormatImporter, EditorScenePostImport, EditorScenePostImportPlugin, EditorScript, EditorTranslationParserPlugin, EncodedObjectAsID, ENetConnection, EngineProfiler, Expression, FileAccess, GDScriptTextDocument, GDScriptWorkspace, GLTFObjectModelProperty, HashingContext, HMACContext, HTTPClient, ImageFormatLoader, JavaClass, JavaObject, JavaScriptObject, KinematicCollision2D, KinematicCollision3D, Lightmapper, Logger, MeshConvexDecompositionSettings, MeshDataTool, MultiplayerAPI, Mutex, NavigationPathQueryParameters2D, NavigationPathQueryParameters3D, NavigationPathQueryResult2D, NavigationPathQueryResult3D, Node3DGizmo, OggPacketSequencePlayback, OpenXRAPIExtension, OpenXRFutureResult, OpenXRSpatialCapabilityConfigurationBaseHeader, OpenXRSpatialComponentData, OpenXRStructureBase, PackedDataContainerRef, PacketPeer, PCKPacker, PhysicsPointQueryParameters2D, PhysicsPointQueryParameters3D, PhysicsRayQueryParameters2D, PhysicsRayQueryParameters3D, PhysicsShapeQueryParameters2D, PhysicsShapeQueryParameters3D, PhysicsTestMotionParameters2D, PhysicsTestMotionParameters3D, PhysicsTestMotionResult2D, PhysicsTestMotionResult3D, RandomNumberGenerator, RDAccelerationStructureGeometry, RDAccelerationStructureInstance, RDAttachmentFormat, RDFramebufferPass, RDHitGroup, RDPipelineColorBlendState, RDPipelineColorBlendStateAttachment, RDPipelineDepthStencilState, RDPipelineMultisampleState, RDPipelineRasterizationState, RDPipelineShader, RDPipelineSpecializationConstant, RDSamplerState, RDShaderSource, RDTextureFormat, RDTextureView, RDUniform, RDVertexAttribute, RegEx, RegExMatch, RenderSceneBuffers, RenderSceneBuffersConfiguration, Resource, ResourceFormatLoader, ResourceFormatSaver, ResourceImporter, SceneState, SceneTreeTimer, ScriptBacktrace, Semaphore, SkinReference, SocketServer, StreamPeer, SurfaceTool, TextLine, TextParagraph, TextServer, Thread, TLSOptions, TranslationDomain, TriangleMesh, Tween, Tweener, UDPServer, UPNP, UPNPDevice, WeakRef, WebRTCPeerConnection, XMLParser, XRInterface, XRPose, XRTracker, ZIPPacker, ZIPReader

Classe di base per oggetti con conteggio dei riferimenti.

Descrizione

Classe di base per qualsiasi oggetto che mantiene un conteggio dei riferimenti. Resource e molti altri oggetti di supporto ereditano questa classe.

A differenza di altri tipi di Object, i RefCounted mantengono un contatore dei riferimenti interno in modo che siano rilasciati automaticamente quando non sono più in uso, e solo allora. I RefCounted non devono quindi essere liberati manualmente con Object.free().

Le istanze RefCounted catturate in un riferimento ciclico non saranno liberate automaticamente. Ad esempio, se un nodo contiene un riferimento all'istanza A, che contiene direttamente o indirettamente un riferimento ad A, il conteggio dei riferimenti di A sarà 2. La distruzione del nodo lascerà A sospeso con un conteggio dei riferimenti di 1 e accadrà una perdita di memoria. Per evitare ciò, uno dei riferimenti nel ciclo può essere reso debole con @GlobalScope.weakref().

Nella stragrande maggioranza dei casi d'uso, è sufficiente istanziare e usare tipi derivati da RefCounted. I metodi forniti in questa classe sono solo per gli utenti avanzati e possono causare problemi se usati in modo improprio.

Nota: In C#, gli oggetti con conteggio dei riferimenti non saranno liberati immediatamente dopo che non sono più in uso. Invece, la garbage collection sarà eseguita periodicamente e libererà gli oggetti con conteggio dei riferimenti che non sono più in uso. Ciò significa che quelli inutilizzati rimarranno in memoria per un po' prima di essere rimossi.

Tutorial

Metodi

int

get_reference_count() const

bool

init_ref()

bool

reference()

bool

unreference()


Descrizioni dei metodi

int get_reference_count() const 🔗

Restituisce il conteggio attuale dei riferimenti.


bool init_ref() 🔗

Inizializza il contatore di riferimento interno. Usalo solo se sai davvero cosa stai facendo.

Restituisce se l'inizializzazione è riuscita.


bool reference() 🔗

Incrementa il contatore di riferimento interno. Usalo solo se sai davvero cosa stai facendo.

Restituisce true se l'incremento ha avuto successo, altrimenti false.


bool unreference() 🔗

Decrementa il contatore di riferimento interno. Usalo solo se sai davvero cosa stai facendo.

Restituisce true se l'oggetto dovrebbe essere liberato dopo il decremento, altrimenti false.