public static BeatmapCharacteristicSO GetCustomGameMode(string serializedName, Sprite icon, string name, string description, bool requires360Movement = true, bool containsRotationEvents = true, int numberOfColors = 2) { if (customGamesModes.TryGetValue(serializedName, out BeatmapCharacteristicSO bcso)) { return(bcso); } if (icon == null) { Texture2D tex = new Texture2D(50, 50); icon = Sprite.Create(tex, new Rect(0f, 0f, tex.width, tex.height), new Vector2(0.5f, 0.5f)); } BeatmapCharacteristicSO customGameMode = BeatmapCharacteristicSO.CreateInstance <BeatmapCharacteristicSO>(); FieldHelper.Set(customGameMode, "_icon", icon); FieldHelper.Set(customGameMode, "_characteristicNameLocalizationKey", name); FieldHelper.Set(customGameMode, "_descriptionLocalizationKey", description); FieldHelper.Set(customGameMode, "_serializedName", serializedName); FieldHelper.Set(customGameMode, "_compoundIdPartName", serializedName); // What is _compoundIdPartName? FieldHelper.Set(customGameMode, "_sortingOrder", 100); FieldHelper.Set(customGameMode, "_containsRotationEvents", containsRotationEvents); FieldHelper.Set(customGameMode, "_requires360Movement", requires360Movement); FieldHelper.Set(customGameMode, "_numberOfColors", numberOfColors); return(customGameMode); }