Resource
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#中,资源不再被使用后不会立即被释放。相反,垃圾回收将定期运行,并释放不再使用的资源。这意味着未使用的资源在被删除之前会停留一段时间。
教程
属性
| ||
| ||
|
方法
void | _setup_local_to_scene ( ) virtual |
void | emit_changed ( ) |
get_local_scene ( ) const | |
get_rid ( ) const | |
void | |
void | take_over_path ( String path ) |
信号
- changed ( )
每当资源发生变化时就会发射。
注意:对于自定义资源,这个信号不会自动发射,这意味着你需要自己创建一个设置器setter并发射信号。
属性说明
- bool resource_local_to_scene
Default |
|
Setter | set_local_to_scene(value) |
Getter | is_local_to_scene() |
如果 true
,则资源在其本地场景的每个实例中都将是唯一的。因此,它可以在场景实例中进行修改,而不会影响同一场景的其他实例。
- String resource_name
Default |
|
Setter | set_name(value) |
Getter | get_name() |
资源名称。这是一个可选的标识符。如果 resource_name 资源名不是空的,则将显示其值,以表示编辑器检查器中的当前资源。对于内置脚本,resource_name将作为脚本编辑器中的选项卡名称显示。
- String resource_path
Default |
|
Setter | set_path(value) |
Getter | get_path() |
资源的路径。如果它有自己的文件,它将返回其文件路径。如果它是与场景绑定的,它将返回场景的路径和资源的索引。
方法说明
- void _setup_local_to_scene ( ) virtual
可以重写的虚函数,用于自定义 setup_local_to_scene 的行为值。
复制资源,返回一个复制了导出成员属性的新资源。注意:为了复制资源,构造函数被调用,没有参数。当构造函数没有默认值时,这个方法会出错。
默认情况下,为了提高效率,子资源在资源副本之间被共享。这可以通过向subresources
参数传递true
来改变,它将复制子资源。
注意: 如果subresources
是true
,这个方法将只执行一个浅层拷贝。子资源中的嵌套资源不会被复制,仍然会被共享。
注意:当复制一个资源时,只有导出export
的属性被复制。其他属性将被设置为新资源中的默认值。
- void emit_changed ( )
发出changed更改信号。
如果依赖该资源的外部对象应该被更新,那么每当该资源的状态发生变化(如属性的修改)时,必须手动调用该方法。
该方法等同于。
emit_signal("change")
注意: 这个方法对于内置资源来说是自动调用的。
- Node get_local_scene ( ) const
如果resource_local_to_scene被启用,并且该资源是从一个PackedScene实例中加载的,则返回该资源的唯一副本正在使用的本地场景。否则,返回null
。
- RID get_rid ( ) const
返回资源的RID(或者一个空的RID)。许多资源(如Texture、Mesh等)是存储在服务器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不同,因为后者会在其他资源已经被缓存在给定的路径上时出错。