Resource

Inherits: Reference < Object

Inherited By: Animation, AnimationNode, AnimationNodeStateMachinePlayback, AnimationNodeStateMachineTransition, AudioBusLayout, AudioEffect, AudioStream, BakedLightmapData, BitMap, ButtonGroup, CryptoKey, CubeMap, Curve, Curve2D, Curve3D, DynamicFontData, EditorSettings, EditorSpatialGizmoPlugin, Environment, Font, GDNativeLibrary, GIProbeData, GLTFAccessor, GLTFAnimation, GLTFBufferView, GLTFCamera, GLTFDocument, GLTFLight, GLTFMesh, GLTFNode, GLTFSkeleton, GLTFSkin, GLTFSpecGloss, GLTFState, GLTFTexture, Gradient, Image, InputEvent, Material, Mesh, MeshLibrary, MultiMesh, NavigationMesh, NavigationPolygon, OccluderPolygon2D, OccluderShape, OpenSimplexNoise, PackedDataContainer, PackedScene, PhysicsMaterial, PolygonPathFinder, RichTextEffect, Script, Shader, Shape, Shape2D, ShortCut, Skin, Sky, SpriteFrames, StyleBox, TextFile, Texture, TextureLayered, Theme, TileSet, Translation, VideoStream, VisualScriptNode, VisualShaderNode, World, World2D, X509Certificate

所有资源的基类。

描述

资源是所有Godot特定资源类型的基类,主要作为数据容器。由于它们继承自Reference,资源被引用计数,并在不再使用时被释放。一旦从磁盘加载,它们也会被缓存,因此任何从给定路径加载资源的尝试都会返回相同的引用(这与Node相反,Node没有引用计数,可以根据需要从磁盘实例化多次)。资源可以从外部保存在磁盘上,也可以捆绑在另一个对象中,如Node或另一个资源。

注意: 在C#中,资源不再被使用后不会立即被释放。相反,垃圾回收将定期运行,并释放不再使用的资源。这意味着未使用的资源在被删除之前会停留一段时间。

教程

属性

bool

resource_local_to_scene

false

String

resource_name

“”

String

resource_path

“”

方法

void

_setup_local_to_scene ( ) virtual

Resource

duplicate ( bool subresources=false ) const

void

emit_changed ( )

Node

get_local_scene ( ) const

RID

get_rid ( ) const

void

setup_local_to_scene ( )

void

take_over_path ( String path )

信号

  • changed ( )

每当资源发生变化时就会发射。

注意:对于自定义资源,这个信号不会自动发射,这意味着你需要自己创建一个设置器setter并发射信号。

属性说明

  • bool resource_local_to_scene

Default

false

Setter

set_local_to_scene(value)

Getter

is_local_to_scene()

如果 true,则资源在其本地场景的每个实例中都将是唯一的。因此,它可以在场景实例中进行修改,而不会影响同一场景的其他实例。


Default

“”

Setter

set_name(value)

Getter

get_name()

资源名称。这是一个可选的标识符。如果 resource_name 资源名不是空的,则将显示其值,以表示编辑器检查器中的当前资源。对于内置脚本,resource_name将作为脚本编辑器中的选项卡名称显示。


Default

“”

Setter

set_path(value)

Getter

get_path()

资源的路径。如果它有自己的文件,它将返回其文件路径。如果它是与场景绑定的,它将返回场景的路径和资源的索引。

方法说明

  • void _setup_local_to_scene ( ) virtual

可以重写的虚函数,用于自定义 setup_local_to_scene 的行为值。


复制资源,返回一个复制了导出成员属性的新资源。注意:为了复制资源,构造函数被调用,没有参数。当构造函数没有默认值时,这个方法会出错。

默认情况下,为了提高效率,子资源在资源副本之间被共享。这可以通过向subresources参数传递true来改变,它将复制子资源。

注意: 如果subresourcestrue,这个方法将只执行一个浅层拷贝。子资源中的嵌套资源不会被复制,仍然会被共享。

注意:当复制一个资源时,只有导出export的属性被复制。其他属性将被设置为新资源中的默认值。


  • void emit_changed ( )

发出changed更改信号。

如果依赖该资源的外部对象应该被更新,那么每当该资源的状态发生变化(如属性的修改)时,必须手动调用该方法。

该方法等同于。

  1. emit_signal("change")

注意: 这个方法对于内置资源来说是自动调用的。


  • Node get_local_scene ( ) const

如果resource_local_to_scene被启用,并且该资源是从一个PackedScene实例中加载的,则返回该资源的唯一副本正在使用的本地场景。否则,返回null


  • RID get_rid ( ) const

返回资源的RID(或者一个空的RID)。许多资源(如TextureMesh等)是存储在服务器server中的资源的高级抽象,所以这个函数将返回原始的RID。


  • void setup_local_to_scene ( )

当启用了resource_local_to_scene的资源从PackedScene实例化中加载时,这个方法会被调用。它的行为可以通过覆盖脚本中的_setup_local_to_scene进行定制。

对于大多数资源,该方法不执行任何基本逻辑。ViewportTexture执行自定义逻辑以正确设置本地视窗中的代理纹理和标志。


  • void take_over_path ( String path )

设置资源的路径,可能会覆盖这个路径的现有缓存条目。这与设置resource_path不同,因为后者会在其他资源已经被缓存在给定的路径上时出错。