# Sandbox.GameResource

Assets defined in C# and created through tools.
You can define your own Custom Asset Types.

- Kind: class
- Namespace: `Sandbox`
- Assembly: `Sandbox.Engine`
- Inherits: [Sandbox.Resource](/api/Sandbox.Resource)
- Modifiers: abstract

## Properties

- [`HasUnsavedChanges`](/api/Sandbox.GameResource/HasUnsavedChanges): True if this resource has changed but the changes aren't written to disk
- [`IsRemote`](/api/Sandbox.GameResource/IsRemote): True if this resource was loaded from a mounted remote (cloud) package rather than the local project.
- [`IsValid`](/api/Sandbox.GameResource/IsValid)
- [`ResourceVersion`](/api/Sandbox.GameResource/ResourceVersion): The version of the component. Used by `T:Sandbox.JsonUpgrader`.

## Methods

- [`CopyFrom`](/api/Sandbox.GameResource/CopyFrom): Copy the serialized state of another resource into this one, including binary blob data.
- [`Deserialize`](/api/Sandbox.GameResource/Deserialize): Deserialize values from a JsonObject
- [`GetReferencedPackages`](/api/Sandbox.GameResource/GetReferencedPackages): Get a list of packages that are needed to load this asset
- [`LoadFromJson`](/api/Sandbox.GameResource/LoadFromJson)
- [`Serialize`](/api/Sandbox.GameResource/Serialize): Serialize the current state to a JsonObject
- [`StateHasChanged`](/api/Sandbox.GameResource/StateHasChanged): Should be called after the resource has been edited by the inspector
