Upgrading to ScriptableObjects
Our chapter wouldn’t be complete without a little Unity-specific application, so let’s transform everything we’ve learned about the Flyweight pattern into ScriptableObject
format so we can use the Inspector to wire up some shareable objects and a factory.
In the Scripts folder, create a new C# script named SOTile
and update its contents to match the following code block, which creates a ScriptableObject
tile class with all the same intrinsic data we have in the Tile
class:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 1
[CreateAssetMenu(fileName = "Tile Data", menuName = "ScriptableObjects/SO Tile")]
// 2
public class SOTile : ScriptableObject, IFlyweight
{
// 3
public TerrainType type;
public Color color;
public float height;
public float size;
// 4
public void Create(ExtrinsicState context)
{
Vector3 position = new Vector3(context...