menu_bookDocumentation

GameResource Extensions - s&box Assets Documentation

calendar_today May 5, 2026 schedule ~1 min read person patrickjr verified 50

GameResource Extensions

Extend GameResource types with additional data. Create extensions that attach to existing resources like models or sounds.

Creating a ResourceExtension

Create an extension class:

CSHARP
[GameResourceExtension( "model" )]
public class ClothingExtension : GameResourceExtension
{
    public List<ClothingItem> Clothing { get; set; }
    public int CostToUnlock { get; set; }
}

Extending Assets

Attach to assets in the editor:

  1. Select a model in Asset Browser
  2. Look for the extension in the inspector
  3. Fill in the extension data
  4. Save the asset

Accessing a ResourceExtension

FindForResourceOrDefault

Get extension or create default:

CSHARP
var ext = ClothingExtension.FindForResourceOrDefault( model );

FindForResource

Get extension only if it exists:

CSHARP
var ext = ClothingExtension.FindForResource( model );
if ( ext != null )
{
    // Use extension data
}

FindAllForResource

Get all extensions of a type:

CSHARP
var allExts = ClothingExtension.FindAllForResource( model );

FindDefault

Get the default extension:

CSHARP
var default = ClothingExtension.FindDefault();

Use Cases

  • Clothing data for characters
  • Weapon stats
  • Sound variations
  • Asset metadata
Extensions let you add data to existing asset types without modifying them.
Was this helpful?