Skip to content

michael811125/OxGKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License


基本介紹

OxGKit 是基於 Unity 設計於遊戲開發常用的系統工具組 (皆為獨立工具)。

TODO 未來會補充 OxGKit 的文檔

Coding Style wiki

目前包含以下

[會持續擴充工具系統組]


工具系統介紹

InfiniteScrollView (dependence UniTask, OxGKit.LoggingSystem)

無限列表 (魔改版),基於原生 UGUI 能夠簡單的繼承或使用現有的 Infinite ScrollView,以物件池的概念進行物件有效循環利用。

Reference: howtungtung - InfiniteScrollView

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/InfiniteScrollView/Scripts to Package Manager

第三方庫 (需自行安裝)

※備註 : Right-Click Create/OxGKit/Infinite ScrollView... (Template cs)


ActionSystem (dependence UniTask, OxGKit.LoggingSystem)

動作序列系統,能夠自行定義 Action 並且自行組合運行組,預設 Actions 有 SequenceAction, ParallelAction, ParallelDelayAction, DelayAction, DelegateAction,另外如果針對動畫需要進行拼湊處理,也可以使用 ActionSystem 作為運行。

  • 透過 Right-Click Create/OxGKit/Action System/Template Action.cs 實作自定義 Action。

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/ActionSystem/Scripts to Package Manager

第三方庫 (需自行安裝)

ActionSystem Demo

OxGKit.-.ActionSystem.Demo.mp4

※備註 : Right-Click Create/OxGKit/Action System... (Template cs)


NoticeSystem or RedDotSystem (dependence OxGKit.LoggingSystem)

通知系統 (也稱紅點系統),支援動態新增刪除通知條件,可以自行定義通知條件,再針對 NoticeItem 進行條件持有註冊,當 NoticeItem 身上其中持有任一符合條件則通知顯示圖示 (紅點)。

  • 透過 Right-Click Create/OxGKit/Notice System/Template Notice Condition.cs 實作通知條件。
  • 將 NoticeItem prefab 拖曳至 UI 上,自行指定 ICON,再取得 NoticeItem 身上的組件進行條件註冊 (當 OnDestroy 時,會自動 Deregister)。
  • 當有數據狀態變更時,必須通知特定條件 ID 進行 Notify,將會透過條件 ID 進行查找持有的 NoticeItems,並且進行刷新顯示。

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/NoticeSystem/Scripts to Package Manager

第三方庫 (需自行安裝)

NoticeSystem Demo

OxGkit.-.NoticeSystem.Demo.mp4

※備註 : Right-Click Create/OxGKit/Notice System... (Template cs)


InputSystem (dependence Unity New InputSystem, OxGKit.LoggingSystem)

輸入控制系統,支援 Unity New InputSystem,如果使用 Unity New InputSystem 需自行建立 Unity New InpuptSystem 的控制表 (Control Maps),並且還有提供使用於 Unity New InputSystem 的 Binding Composite 腳本模板,最後再由 Input Action 派送輸入訊號控制由訂閱者訂閱,進而做到遊戲中的控制邏輯不需要知道平台裝置區分,皆由 Input Action 進行整合,當然 Input Action 也支援其他輸入控制插件,作為單純的輸入控制派送者。

  • 透過 Right-Click Create/OxGKit/Input System/Template Input Action.cs 實作 InputAction 介面。
  • 調用 Inputs API (using.OxGkit.InputSystem)

主要層級驅動區分為以下

  • For Unity New InputSystem
    • Control Maps (Input Action Asset)
    • Binding Composites
  • For Any Inputs
    • Input Actions (此為獨立作為通用訊號派送者,不依賴任何輸入控制插件,皆可自由實現)

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/InputSystem/Scripts to Package Manager

第三方庫 (需自行安裝)

InputSystem Demo

OxGkit.-.InputSystem.Demo.mp4

※備註 : Right-Click Create/OxGKit/Input System... (Template cs)


LoggingSystem (dependence LWMyBox)

日誌系統,透過拖曳 LoggingLauncher 至場景上激活環境配置 (僅需激活一次),並且需加載 LoggerSetting 進行日誌開關控制。

  • 透過 Right-Click Create/OxGKit/Logging System/Create Logger Setting 建立配置檔。
  • 透過菜單選項 OxGKit/Logging System/Logger Setting 開啟將會自動生成配置檔。

Build 激活宏

  • OXGKIT_LOGGER_ON

新增 Logger 或移除 Logger 皆需手動執行 Reload Loggers 重載 (建議定義一個 default constructor,避免搭配 HybridCLR + Activator.CreateInstance(type) 出現錯誤)。

using OxGKit.LoggingSystem;

[LoggerName("MyLogger")]
public class MyLogger1 : Logging 
{
    // If use HybridCLR must create a default constructor
    public MyLogger1() { }
}

// Use same name to override MyLogger1
[LoggerName("MyLogger", true)]
public class MyLogger2 : Logging 
{
    // If use HybridCLR must create a default constructor
    public MyLogger2() { }
	
    public override void Log(object message)
    {
        UnityEngine.Debug.Log("[Override]" + message);
    }
    
    public override void LogWarning(object message)
    {
        UnityEngine.Debug.LogWarning("[Override]" + message);
    }
    
    public override void LogError(object message)
    {
        UnityEngine.Debug.LogError("[Override]" + message);
    }
    
    public override void LogException(Exception exception)
    {
        UnityEngine.Debug.LogException(exception);
    }
}

如果搭配 HybridCLR 有主工程跟熱更工程的區分,建議自行手動拆分調用 AOT 跟 Hotfix 的 Loggers 初始流程,可以參考以下。

// Init by yourself
Logging.CreateLogger<YourLogger>();
LoggingLauncher.TryLoadLoggerSetting();

以下是在 AOT 工程中初始 AOT 工程的 Loggers (如果 Hotfix 工程的 Loggers 需要再 Hotfix 工程中初始)。

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/LoggingSystem/Scripts to Package Manager

第三方庫 (需自行安裝)

LoggingSystem Demo

OxGkit.-.LoggingSystem.Demo.mp4

LoggingSystem Build Test

OxGkit.-.LoggingSystem.Build.Test.mp4

TweenSystem (dependence DoTween Pro, LWMyBox, OxGKit.Utilities)

補間動畫 (僅支持 DoTween Pro)。

  • Add Component/OxGKit/TweenSystem/DoTweenAnim
  • Add Component/OxGKit/TweenSystem/DoTweenAnimEvent

Highly Recommended brunomikoski - Animation Sequencer

Preview Mode (Only DoTweenAnim component is supported)

※Note: The DoTweenAnimEvent only plays at runtime.

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/TweenSystem/Scripts to Package Manager

第三方庫 (需自行購買安裝)

第三方庫 (需自行安裝)

Create DoTween Assemblies

TweenSystem Demo

OxGKit.-.TweenSystem.Demo.mp4

Utilities (dependence UniTask)

各通用組件 (Essential)。

  • Utilities
    • Timer: DeltaTimer, RealTimer, DTUpdater, RTUpdater, IntervalTimer, IntervalSetter, NtpTime (clock sync with NTP server).
    • Adapter: UISafeAreaAdapter.
    • Pool: NodePool (GameObject Pool).
    • ButtonPlus: Inherited by Unity Button. extend Long Click and Transition Scale.
    • Unity Main Thread: UMT.
    • Singleton: MonoSingleton (MonoBehaviour), NewSingleton (class).
    • Requester: RequestAudio, RequestTexture2D, RequestSprite, RequestBytes, RequestText.
    • Cacher: ARCCache<TKey, TValue>, LRUCache<TKey, TValue>, LRUKCache<TKey, TValue>.
    • TextureAnimation.
  • Editor
    • RectTransform: RectTransformAdjuster (Hotkey: Shift+R, R: RectTransform).
    • MissingScriptsFinder.
    • SymlinkUtility.

[參考 Example]

Installation

Install via git URL
Add https://github.com/michael811125/OxGKit.git?path=Assets/OxGKit/Utilities/Scripts to Package Manager

第三方庫 (獨立安裝時,需自行安裝; 如果搭配 OxGFrame 則不需要額外安裝 UniTask)

Utilities Demo (RectTransformAdjuster)

OxGkit.-.Utlities.Demo.RectTransformAdjuster.mp4

Utilities Demo (ButtonPlus)

OxGkit.-.Utlities.Demo.ButtonPlus.mp4

Utilities Demo (Timer)

OxGKit.-.Utlities.Demo.Timer.mp4

Unity 版本

建議使用 Unity 2021.3.32f1(LTS) or higher 版本 - Unity Download


Donate

paypal_logo_x128

buymeacoffee_qrcode_x128


License

This library is under the MIT License.