🇯🇵 日本語版
Fundamental scripting library for Unity designed to be minimal, efficient & dependency-free as possible.
Most of scripts are C# / .NET compliant. See using statements in .cs files for details.
Tip
Licensed under the MIT License unless otherwise described.
Supported Unity version: Unity 2021.3+
Add the following git URL in Unity Package Manager (UPM)
Use latest stable release
https://github.com/sator-imaging/Unity-Fundamentals.git#latest
or use specific version (append desired version at the end: #vX.Y.Z)
https://github.com/sator-imaging/Unity-Fundamentals.git#v1.3.1
Important
It's very experimental and may have breaking changes or compile errors without notice.
https://github.com/sator-imaging/Unity-Fundamentals.git
Microthreading Library for .NET / Unity 📘 or 日本語版
Task scheduler with concurrency level control 📘
Split string without allocation. 📘 or 日本語版
Transform event Action<T> to IObservable<T>.
Task.WhenEach for Unity / .NET Standard 2.1
📘
or 日本語版
Providing function for early-finally pattern.
📘
TODO: implement IAsyncDisposable overloads.
- ex)
await using var _ = Defer.New(async () => await ...);
Unlike other enum utility, this class re-use system cache and also support parsing Flags value.
📘
List implementation of Span<T> especially designed to work with Span<char>.
📘
TODO: add (int, int) GetMinMaxLength()
- to prevent enumerating repeatedly to get same result.
- add
bool _isFrozento determine recalculate is required.Writeturns it off when changed. - add
bool IsFormattablewith more strict token check:{one}{two}(currently accepted but must be rejected) - one pass replacement for
FormatNonAlloc: search for{then perform.Slice(foundIndex, fromTokenMaxLength), check which one is match.
Minimal xxHash32 / xxHash64 implementation. 📘 or 日本語版
License: BSD 2-Clause
xxHash Clean C Reference Implementation
xxHash Library
Copyright (c) 2012-2020 Yann Collet
Copyright (c) 2019-2020 Devin Hussey (easyaspi314)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Lightning-fast non-alloc string builder faster than DefaultInterpolatedStringHandler
📘
or 技術的な解説
NOTE: depending on StrictEnum
TODO: benchmark
Self-contained singly linked list based object pool. 📘 or 日本語版
TODO: write tests
Fast & efficient exclusive or concurrent thread/event manager. 📘
Believe-worthy, device-independent time provider based on HTTPS connection.
📘
or 解説
Thread! safe!! singleton!!! 日本語版
https://github.com/sator-imaging/Half-Ulid
Crazy stuff.
No need to use this anymore as unity asset store now accepts package.json.
📘
Transform UnityEvent to IObservable<T>.
📘
Reliable nullable (?? ?. ) support for ??=UnityEngine.Object.
📘
Provides functions that avoid creating leaked managed shell. 📘 or 解説その1 その2
Self-contained singly linked list based MonoBehaviour pool.
📘
or 日本語版
ExecuteAfterextension method- unlike builtin
ExecuteLatermethod, this method runs action right after specified number of repaint events.
- unlike builtin
DisableStyleTransitionScopeextension method- this method temporarily turns off all transitions and turns them back on when leaving the
IDisposablescope. useful for immediate style update without transition animation.
- this method temporarily turns off all transitions and turns them back on when leaving the
Use extension method RegisterCallbackAsSubscription to register event as IDisposable interface.
It allows easily unregister event later.
Extension method RegisterCallbackAsEnum allows implement typed callback.
And also there is option to delay event to correctly handle dropdown event.
(if no delay, dropdown in Unity editor behaves like 'stop-the-world' and some actions are not work as expected)
NOTE: depending on StrictEnum
Generate clean environment and build script for selected UPM package. 📘 or 日本語マニュアル
TODO: unit test automation.
Download C# API Documentation from Nuget.org. 📘
License: Apache License version 2.0
Provide access to VisualElement in Unity main toolbar.
📘
or 日本語版
Not perfect. Just for reference. 📘
TODO: documentation
As IL2CPP bloats resulting C++ code if C# class is not marked with sealed modifier.
Obsolete features still exist as .txt files.
📘
or 日本語版
Job runner for Unity providing reliable un-async-ing functions and more.
Note
InitializeMainThreadContext may be required to being called on Unity startup. (it called automatically by default)
TODO: documentation for OnMainThread, InThreadPool, SetExceptionHandler, GetTimerToken, GetElapsedTime, Shutdown, CreateNewScheduler, SetConcurrentThreadCount
https://sator-imaging.github.io/Unity-Fundamentals/api/index.html
How to set DefineConstants in .csproj file from dotnet command, see
Directory.Build.Props
and
Program.cs
for details.
Source: dotnet/sdk#9562 (comment)
Post as a comment for pull request.
/gemini summary/gemini review/gemini/gemini help
https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github#style-guide
