Namespace Glitch9
Classes
ActiveState
ArrayExtensions
AssetPathAttribute
Runtime equivalent of FilePathAttribute.
Used to define the relative path for ScriptableObjects that are loaded at runtime.
For example:
[AssetPath("Settings/MySettings", AssetPathAttribute.Location.ResourcesFolder)]
public class MySettings : ScriptableInstance<MySettings>
will load the ScriptableObject from:
Assets/Resources/Settings/MySettings.asset
AttributeCache<T>
BugException
CollectionExtensions
CommandBus
- Concrete implementation of ICommandBus.
- Multiple handlers per command type (fan-out) by design.
- Thread-safe for Register/Unregister/Dispatch using a lock.
- Dispatch executes handlers outside the lock using a snapshot.
ConversionNotSupportedException
Thrown when a conversion between two types is not supported.
CoreLibTypeExtensions
Currency
CustomerSupportException
DateTimeExtensions
DevLog
EmptyResult
EnumExtensions
EnumSwitchAttribute
EventBus
EventExtensions
ExceptionExtensions
ExchangeRate
ExperimentalAttribute
ExperimentalAttributeExtensions
FallbackExtensions
FeatureComingSoonException
FoldoutHeaderAttribute
G9
G9.Message
GMath
Math utility class for CoreLib (UnityEngine-independent).
HideInInspectorIfAttribute
InspectorDisplayAttribute
Adds indentation to a field in the Inspector. Usage: [Indent(1)] public int example;
InspectorNameUtils
열거형 값에 InspectorName을 붙여서 Editor에서 사용하기 위함 또는 DisplayName을 붙여서도 사용 가능 주로 Editor에서 코드와 UI를 연결할 때 활용됩니다.
JsonNet
Internally used utilities for JSON serialization and deserialization using Newtonsoft.Json
JsonNetDebug
LeftToggleAttribute
LocaleIetfConverter
JSON converter for Locale struct to handle serialization and deserialization. It uses IETF tags for representation.
LocaleUtil
Log
LogMessageAttribute
LogMessageExtensions
Logger
MessageBusBase<TMessage>
- 공통 메시지 버스 기반 클래스.
- 타입별 핸들러 관리 및 스냅샷 캐싱.
- 클래스 체인 + 인터페이스 순회 지원.
- 스레드 안전성 보장 (lock).
Metadata
MetadataExtensions
MimeType
MimeTypeExtensions
MimeTypeUtils
NewTypeDetectedException
NotInitializedException
NullableRangedFloatConverter<T>
NullableRangedFloat<T>
Serializable nullable float with range validation and default value.
NullableRangedIntConverter<T>
NullableRangedInt<T>
Serializable nullable int with range validation and default value.
NullableRangedLongConverter<T>
NullableRangedLong<T>
Serializable nullable long with range validation and default value. Mirrors NullableRangedInt<T> for 64-bit integer values (e.g. seeds).
NullableUnixTimeAttribute
NumberExtensions
Prefs<T>
Wrapper for Unity's PlayerPrefs with type safety and serialization support. This class allows you to store and retrieve various types of data in PlayerPrefs, while ensuring type safety and automatic serialization/deserialization.
PropertyInfoCache
RangedFloatAttribute
RangedIntAttribute
Ref<T>
ResultBase
ResultBase<T>
RichText
Utility class for generating rich text formatted strings.
SafeConvert
SafeParse
SafePath
Safe version of C# 'Path' class utilizing UniTask for async operations. Path operations with safety checks and utility methods.
SearchUtility
SemaphoreSlimPool
Provides a pool of SemaphoreSlim objects to manage resource usage efficiently.
SerializableDatabase<TData>
SerializableDictionary<TKey, TValue>
SerializableKeyValuePair<TKey, TValue>
SerializableMetadata
SerializableNullableExtensions
SerializableNullableJsonConverter<T>
Put it on every SerializableNullable field.
SerializableNullable<T>
SerializableStringAttribute
SerializableStringEnumConverter<T>
Enum-aware converter (preserves raw string, round-trips unknown values as strings)
SerializableString<T>
SerializeNullableAttribute
ShowInInspectorIfAttribute
State<T>
StringBuilderPool
Provides a pool of StringBuilder objects to manage resource usage efficiently.
StringExtensions
StringOrTextAsset
StringOrTextAssetExtensions
StringOrTextAssetTextAreaAttribute
StringPopupAttribute
SystemExtensions
SystemLanguageUtil
TextSplitter
ThreadSafeMap<TKey, TValue>
ThrowIf
Validator class that throws exceptions if conditions are not met.
UnityObjectExtensions
Collection of extension methods that requires UnityEngine assembly reference.
UnityPath
Dealing the path in Unity can be very painful. This class provides a set of extensions to make it easier to work with file paths in Unity. (It's still painful, but at least it's easier.)
UnityPathAttribute
UnwrappedInspectorAttribute
VideoTexture
ChatGPT told me that extending UnityEngine.Object directly is not recommended. So I made this ScriptableObject wrapper around RenderTexture.
Structs
Delta<T>
Event<T>
Wrapper event payload.
FilePath
Locale
Locale value type that unifies ISO 639-1 language codes (e.g., "en", "ja") and IETF/BCP-47 tags (e.g., "en-US", "ja-JP") for game/app localization:
- Purpose: Represent a language (and optionally a region) with a single, ergonomic type.
- Inputs: Accepts
stringcodes,SystemLanguage,CultureInfo, enumintindex, or anotherLocale. - Parsing: Strings containing '-' or '_' are treated as IETF/BCP-47 (e.g.,
en-US); otherwise parsed as ISO 639-1 (e.g.,en). - Normalization: Internally normalizes to
CultureInfo.Name(e.g., "en-US"); case-insensitive; underscores tolerated. - Defaults:
Unknownmaps toSystemLanguage.Unknown; null/empty/invalid inputs safely fall back to"en-US". - Properties:
CultureCodereturns normalized tag (e.g., "en-US");DisplayNamefromCultureInfo(e.g., "English (United States)"). - System bridges:
EnumValueexposesSystemLanguage;CultureInfoexposes full culture data for formatting and ICU rules. - Conversions:
implicit/explicitoperators forSystemLanguage,CultureInfo,string, andintenable ergonomic use. - API helpers:
FromISO6391("en")andFromIETFTag("en-US")parse common code paths with safe fallbacks. - Equality:
Equals/==compareSystemLanguageand normalizedCultureCode(case-insensitive);GetHashCodestable for dictionary keys. - Ordering:
CompareToorders bySystemLanguageenum for predictable sorting. - Serialization:
OnBeforeSerialize/OnAfterDeserializekeepCultureInfo,EnumValue, andcultureCodeconsistent; safe default is "en-US". - When to use ISO 639-1 If regional differences are irrelevant (shared audio/UI), simple language codes (e.g., "en", "ja") are sufficient.
- When to use IETF tags If spelling/audio/content varies by region, use locale-specific tags (e.g., "en-US", "en-GB", "ja-JP").
- Best practice Store
CultureCode(normalized) for persistence; convert toSystemLanguage/CultureInfoat UI/runtime edges.
Result<T>
SystemMessage
A simple diagnostic message with a title and message body.
UnityColor
New colors added in Unity 6000+ for lower version compatibility.
UnixTime
A long value that acts as a DateTime object. (DateTime??媛?ν븳 long 媛?
ZuluTime
Interfaces
IArchivable
Represents objects that can be archived.
ICommand
Marker interface for Commands.
ICommandBus
- Routes Commands to exactly one handler per command type.
- Designed for UI/Node -> Controller command flow (single receiver).
- Provides IDisposable registration token for clean unregistration.
ICommandHandler<T>
IData
Interface for data objects with an ID and Name. Useful for identifying items within a collection or database.
IDeprecatable
Represents objects that can be deprecated.
IEmptiable
IErrorListener
Observer interface for receiving error events.
IErrorProvider
IEvent
IEventBus
IEventHandler<T>
IFavoritable
Represents objects that can be marked as favorite.
IHasGuid
IHasId<TId>
IHasName
Provides a name for an object.
ILogger
INullable
Represents objects that can be null or have a value.
IProjector<TOut>
Marker for payloads that can project to another type.
IResult
Avoid using object to keep APIs strongly typed.
IValidatable
Represents objects that can validate their parameters.
IValidity
Represents objects that can report on the validity of their parameters.
Enums
AssetPathAttribute.Location
CalendarStartDay
Specifies the starting day of the week for a calendar.
CompareMode
Represents comparison modes for equality checks.
Country
CurrencyCode
Enumeration of ISO 4217 currency codes, indexed with their respective ISO 4217 numeric currency codes. Only codes support in .Net with RegionInfo objects are listed
DevLogType
InfoType
Represents the type of information or message.
LanguageCodeType
NamingRule
Priority
Represents the priority level of an item or task.
TextCase
Represents different text casing styles.
TimeFormat
Specifies whether time is displayed in 24-hour format or 12-hour format (with AM/PM).
TimeZone
UnityPathType
Specifies different types of paths used in Unity projects.