Unity - FrankNine/franknine.github.io GitHub Wiki
電子報
- Yucchiy's Note
- Unity 技術週報,週一出刊
- 作者:ゆっち〜 (Yuichiro MUKAI)
Blog
- aras-p
- 前 Unity 主程式,目前是 Blender contributor,依舊有很多 Unity 深層資料
- Catlike Coding
- 詳盡的 Unity 教學,尤其是持續有更新的 Rendering Pipeline 底層教學
- 中文翻譯:[教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了
- Ben Golus
- Unity 論壇上的圖學之神
- Sebastian Lague
- Coding Adventure 系列紀錄很多在 Unity 內實做高階繪圖的頻道
- Sebastian Schöner
- 前 Unity 工程師,有很多 IL2CPP 底層跟 C++ 的資料
- Seba's Lab
- Sebastiano Mandalà,開始 Unity Dependency Injection 的人,Zenject 是他的 IoC Container 的 Fork
現在轉投入自己的 Svelto.ECS 框架
- Sebastiano Mandalà,開始 Unity Dependency Injection 的人,Zenject 是他的 IoC Container 的 Fork
- Cyanilux
- 特效方面的部落客
- Alan Zucconi
- 多產的 Unity 教學作家
- UWA4D
- UWA 最佳化服務公司的官網,有很多資料
- 錢康來
- 逝水追风
- 兩位涉獵廣泛的中國工程師
- Game Torrahod / 5argon
- 泰國的開發者,偏向音樂遊戲,會作曲,Native Audio 的作者
- Jason Booth
- MicroSplat、MicroVerse 與 Better Shader 作者,Terrain 跟 Shader 專家
Unity 員工離職感言
入門教學
- Brackeys
- YouTube 最大教學頻道
- Learn with Pathways
- 官方網路課程
架構
Architecture
- Alexey Merzlikin - Architecture Behind Our Most Popular Unity Games
- 類似 Rayark 的 Generator Pattern
- 作者:gamedev.center
Dependency Injection
- Inversion of Control with Unity
- Sebastiano Mandalà 最初的 Dependency Injection 論文,與最早的 Unity IoC Container 實做
- VContainer
- 由日本人開發的 IoC Container,目前慣用替代大又前景不明的 Zenject 系列
- Unite 2016 - Unity Architecture in Pokémon Go
- Pokémon Go 使用 Zenject 做 DI 的演講,算是有歷史意義
- 【Unity】シンプルなDIコンテナを自作してみた
- 自製 Container 教學
DI 不使用 Container 注入 ScriptableObject 流派
- 不使用 Container Resolve 依賴,而是手動用 ScriptableObject 連接依賴
- Unity 保證 Loading 時依賴會存在
- 可以露出傳遞的值或是事件給設計師觸發或是修改
- 獨立遊戲開發者分享會191201 Part1 - 健全碼農工作坊「拆解耦合」
- Create modular game architecture in Unity with ScriptableObjects
- 官方 ebook
- Overthrowing the MonoBehaviour Tyranny in a Glorious ScriptableObject Revolution
- 早期代表性的演講
ECS
- 實在沒在用也被改版搞到昏頭沒有多少涉獵的資料
- Introduction to the Data-Oriented Technology Stack for advanced Unity developers
- 新的官方 ebook
- Unity 6 + ECS 1.3 で Boids シミュレーションを書き直してみた
- 蠻新的教學,我有 Follow 過還蠻不錯的
- ECSを使ってTextMesh Proの文字を大量に描画する
DOTS
C#
- Custom == operator, should we keep it?
- UnityEngine.Object == 有 Overload 會多檢查物件生命週期,造成比較時比預期中貴
- ?? operator 無法 overload,會退回一般 C# null 檢查,是一個坑
- Conditional compilation in Unity
- Unity scripting symbol reference
- 條件編譯 Code 的資料,C# 原有 Conditional attribute 可使用
- Understanding C# Struct All Things
IL2CPP
- An introduction to IL2CPP internals
- IL2CPP internals: Method calls
- 官方掀蓋頭介紹,平常人不用看
- 不正常人想像我會去讀 IL2CPP 產出的 C++ Code 的人,這是不錯入門
- Instantly Boost Unity Game Performance With IL2CPP_USE_SPARSEHASH
IL2CPP_USE_SPARSEHASH
改變 IL2CPP 行為
- MethodImplOptions(インライン展開など)によるIL2CPPのふるまい
IL
Burst
Multi-Thread
Incremental Source Generator
UniTask
- 現在 Async 操作的預設工具
- 比起來 UniRx 跟 R3 太過複雜(Steam 是 Hot? Cold? 搞不清楚),所以就沒用也沒有蒐集資料了
- Unity - CancellationTokenの生成・使い方完全ガイド
- Async 出去 CancellationToken 很重要的
- Async FSM using UniTask
UniRx
- 雖然沒用 UniRx 但是看到文章很可愛還是書籤了
- 街づくりゲームの住民管理システムを設計した話
MessagePipe
- CySharp 的 Message Bus
- 【Unity】MessagePipeを触ってみる1
概要・導入編
MasterMemory
熱更新
更新邏輯
Lua
- 腾讯开源手游热更新方案,Unity3D 下的 Lua 编程
- 用好Lua+Unity,让性能飞起来——Lua与C#交互篇
- 【Unity】Lua-CSharpを使ってアドベンチャーゲームの会話機能を作ってみた
- Lua性能优化—Lua内存优化
InjectFix
其他
更新資源
Networking
替代 C# 語言
Editor 工具
- Unity エディター拡張入門
- 蠻早蠻詳盡的書,雖然因為舊了被作者下架,但是還是很有參考價值
- Unity5.3で知識が止まっている人向けのUnity2017.2に合わせたエディター拡張アップデート
- Going deep with IMGUI and Editor Customization
特定功能
搜尋
- Unity 引用查找
- 穩定且超高速的 Reference 尋找工具
- Unity Searchを拡張する(QueryEngine編)
- 使用
UnityEditor.Search.QueryEngine
- 使用
其他
- Toolbar Overlays in Unity
- Unity ParticleSystem Preview 粒子系统预览工具
- Unityのエディタ拡張で使える「Tree View」が超絶便利なので実装方法を紹介したい!
- How can I modify Project Settings via scripting?
- Editor拡張を使ってAnimationCurveをプリセット化する
UI
- Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
- UnityのuGUIのレイアウト調整機能について解説してみる(RectTransform入門)
- Unity项目中UI同学需知的程序相关要点
- Unity UI Best Practices
- 【Unity】TextMeshProのアウトラインを理解する
- 【Unity】FontEngineで軽量テキスト描画
Input System
- 【Unity】Input Systemでキー割り当ての重複を調べる
- 【Unity】Input Systemを旧Inputのように扱う方法と注意点
- 【Unity】Input SystemのInteractionの仕組みと使い方
- 【Unity】Input Systemでローカルマルチを実装する
- 【Unity】Input Systemからマウスカーソルを操作する
- 【Unity】Input SystemのAxis/Vector系Compositeのモードによる挙動の違い
- 【Unity】Input Systemでキーコンフィグを実装する
Character Controller
2D
3D
Animation
Playable
Localization
Plugin 開發
Android
- Android Studio を利用して C++ のスタティックライブラリ(.a)をUnity(C#)向けに作成する
- Unity Android平台下插件/SDK开发通用流程
- Unity Androidのネイティブプラグイン(C++)でOpenGLのテクスチャデータをNativeArrayにコピーする
iOS
- Swift だけで Unity の iOS の Native Plugin を作る
- 【Unity】iOSネイティブプラグイン開発を完全に理解する - サンプルコードをSwiftだけで完結出来るように置き換える
PC
Rust
Serialization
原理
- Asset、Object 與序列化
- Unity文件、文件引用、Meta详解
- Unity插件开发基础 - 浅谈序列化系统
- AssetDatabase.Refresh() refresher - Unite Copenhagen
非 Unity 的 Serialization
MessagePack
FlexBuffers
AssetBundle
- AssetBundle fundamentals
- Unity3D asset bundle 格式简析
- 你应该知道的AssetBundle管理机制
- Unity Asset Bundles tips and pitfalls
- How can I check which Assets are included in an Asset bundle?
- Learn to save memory usage by improving the way you use AssetBundles
- 【Unity】AssetBundleのManifestファイルに書かれている内容について
- Unity道場スペシャル 2017京都】いまのAssetbundle、次のassetbundle
- 勉強会レポ : Unity AssetBundle 完全に理解した
AssetBundle 不穩定
AssetBundle 打包工具
AssetBundle 瀏覽工具
Addressable
- Unity Addressable 獨立資源包
- SmartAddresser
- CyberAgent 的自動 Addressable 切分工具
WebExtract / Binary2Text
- Unity 打出資源的最底層
- UnityDataTool
- [2018 TGDF] 刘伟贤 ─【Unity 議程】AssetBundle 細節解析
- 網路上唯一一場 WebExtract / Binary2Text 官方介紹
破解
拆 AssetBundle
TypeTree
- 更新 AssetStudio 等資源破解工具需要用的
- TypeTreeDumper
- TypeTreeDumps
內嵌 Unity 到原生 App
Android
- Unity and Android — Connecting the dots
- AndroidアプリにUnity as a Libraryを導入する
- UnityでPicture in Pictureを実装する方法(Android編)
HTTP/2
- 【Unity】YetAnotherHttpHandlerを用いてHTTP/2を扱えるHttpClientを作成する
- HttpClient と YetAnotherHttpHandler で AssetBundle のダウンロードを HTTP/2 化してみる
- Unity(YetAnotherHttpHandler)とMagicOnionで自己署名証明書を使ったHTTPS&HTTP/2通信
- Re: C#(Unity)でHTTP/3通信してみる その参 ~Unityから使ってみる~
gRPC
Client - Server
Firebase
MagicOnion
- Client 跟 Server 都寫 C# 共用 Project 的開發結構
- C#によるクライアント/サーバーの開発言語統一がもたらす高効率な開発体制
- MagicOnion + NATS + LogicLooperでC#大統一!やってみた
- MagicOnion + MessagePack + YetAnotherHttpHandler でリアルタイム通信を行う
Apps Script
版本控制
Texture
- PVRTC vs ASTC texture compression on an iOS device
- 基本上都用 ASTC 了,只是這個實驗很詳盡想留著
- Compressed GPU texture formats – a review and compute shader decoders
Rendering
NativeRenderingPlugin
- Renderer C++ 介面
- Native code (C++) rendering plugin example for Unity
Shader
- HLSL shader examples in the Built-in Render Pipeline
- 官方 Shader 範例
- HLSL data types in Unity
- Shader input
- Creating Assets with Photogrammetry using a rotating surface
效果
- 實在太多了
Better Shaders
系列教學
- Outline Post Process in Unity Shader Graph (URP)
- Halftone Effect in URP Shader Graph
- 【Unity Shader编程】浅墨 毛星云
- SRP
- 知乎 Unity Graphics
- UnityのShader(ShaderLab/HLSL)入門その1 : Shaderの書き方
- The Unity Shader Bible
Screen Space Reflections
Postprocessing
- Adventures in postprocessing with Unity
- 【Unity】FullScreen ShaderGraphで画面転換表現用Materialを作る
- 【Unity ガンマ補正】フェードアニメーションの色の歪みについて考えてみる
Photoshop 模擬
水面
傳送門
Outline
- The easiest way to render an outline in Unity
- 2D Sprite Outlines in Unity
- Sprite Outline Sample
- 【Unity】モデルインポート時にアウトライン用の法線を生成する
- Outline Shader
Compute
- Unity の DX11 向け機能のサンプルを読んでみた
- 【Unity2022】スプラインをCompute Shaderから扱う方法
- Compute Shaders in Unity: Processing transforms with GPU
- 【Unity】実践!Compute Shaderを最適化してみよう
陰影
- Unity移动端动态阴影总结
- Unityでステンシルシャドウボリューム
- Unity上でスポットライトとシャドウマップを自作してみた
- _CameraDepthTexture迷思:为什么要用再渲染一边shadowcaster来实现
Planar Shadow
深度重建
- Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)
- Unity のシェーダ内でスクリーンの色と深度を取得するときの注意点
車
粒子
天氣
角色
- Mask的艺术 – 近似PBR的Dota2角色渲染
- [Unity]崩壊スターレイルのキャラクターレンダリング再現
- 【令和最新版】原神MMDをUnityで動かす話
URP対応を添えて - Advanced tips for character art production in Unity
- Sakura Rabbit
- 【Unity URP】キャラクタートゥーンシェーダの表現手法をまとめる その2(明暗境界線の彩度上げ)
- 学園アイドルマスターの眉毛のShaderをUnityで再現してみた
PBR
Path Tracer
Render Graph
RenderQueue
Instancing
- 【Unityにおける大量描画のテクニック】ライフゲームタワーを使ったパフォーマンス比較
- 【Unity】オブジェクト大量描画のスタート地点に立とう
- そろそろShaderをやるパート91 -URP編- GPU Instancingで大量に草を生やす
Grab
破壞
切割
UV
SDF
Ray Marching
Blending
掃描
球面場景
Voxelize
Cluster Renderer
Decal
Lightmap
- GPU Lightmapper: A Technical Deep Dive
- 以經被 Unity 放生,留作紀錄
Isometric
Pixel Perfect
Batching
Mesh Generation
深度遮擋
案例
BlendShape
冰凍
Deferred Rendering
沙
Bgolus 的 Unity 教室
- Switching between regular alpha and alpha fade in shader pragma
- Some more advanced shader questions
- Questions on how to get and work with the depth/z-position of a fragment
- Light distance in shader
- Is Linear lighting more CPU intensive than Gamma lighting on mobile?
- Outline effect
- Correct use of UNITY_BRANCH
- How expensive is Smooth step in Shaders for Mobile?
- Standard Shader (modified to be double sided) is very shiny on the underside
- Extracting depth value from camera projection matrix
- How to use fwidth?
- Renderer without overdraw?
CJCat
Rendering Debug
- Debug shaders with Visual Studio
#pragma enable_d3d11_debug_symbols
- Debug shaders with PIX
- ShaderDebugPrint.hlsl
- 【Unity】【URP】あらゆる描画のデバッグをできるRendering Debuggerの概要&よく使う機能まとめ
RenderDoc
- RenderDoc integration
- When Unity's Frame Debugger is not enough: RenderDoc
- RenderDoc 可用
#pragma enable_d3d11_debug_symbols
- RenderDoc 可用
- 10万オブジェクトを低レイヤーの力で描画する
- 【Unity】Z-Fightingと計算誤差【RenderDoc】
物理
- Unity Rigidbody’s Interpolate property
- Collision detection modes in Unity’s Rigidbody component
- Unityで物理演算ゲームの作り方
- The Fundamentals of Unity 2D colliders
數學
Quaternion
Curve
Audio Latency
- 5argon
- Android Sound Latency Fix
最佳化
- Unity优化百科(UWA 博客目录)
- Unity手游性能优化
- Diagnosing Performance Problems - Unity Learn
- Optimize your game performance for consoles and PCs in Unity
- Unity Performance Tuning Bible
- So your code is slow: General C# and DOTS-specific performance tips
- Arm Guide for Unity Developer
- Tackling profiling for mobile games with Unity and Arm
- Optimizing performance of Unity games
- Performance benchmarking in Unity: How to get started
- Fix your (Unity) Timestep!
- Fast Domain Reloads in Unity
演講
- Unite 2016 - Let's Talk (Content) Optimization
- Unite 2016 - Tools, Tricks and Technologies for Reaching Stutter Free 60 FPS in INSIDE
- Unite Europe 2016 - Optimizing Mobile Applications
- Unite Europe 2017 - Squeezing Unity: Tips for raising performance
- Bringing Call of Duty to mobile - Unite Copenhagen
- Ori And The Will of the Wisps Switch Analysis: Inside An 'Impossible' Port
- Too Close to Draw Call: Pushing Unity to Max Performance on Mobile VR
- Unity Developer Summit: Performance Tips & Tricks from a Unity Consultant
- Oculus Connect 5 | Reinforcing Mobile Performance with RenderDoc
- Unity台北場優化分享 II
- 2019 Unity優化講座 III - TGDF
Unity 功能
- How on-demand rendering can improve mobile performance
- BatchRendererGroup sample: Achieve high frame rate even on budget devices
- 【Unity】Mesh Rendererから卒業して爆速パフォーマンスをゲットしよう。BatchRendererGroup 2022の詳解
案例
- Unite Europe 2017 - The AAA graphics of Spellsouls: achieving 60FPS on mobile
- Why Cities: Skylines 2 performs poorly
- 【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法
「ゲシュタルト・オーディン」開発における最適化事例
Coding
- 10000 Update() calls
- 直接 C# 呼叫替代由 Update callback
- Is Vector3.one slow in Unity?
記憶體
- Memory usage on devices
- Unity Internals: Memory and Performance
- Memory allocator customization
- Memory Arenas in Unity: Heap Allocation Without the GC
String
- Unity 游戏的String interning优化
- Unity 游戏的 string interning 优化
- String.InternによるUnityでの省メモリ化ハック
- アロケーションなしで文字列を分割(Split)
- 【C#】文字列の最適化手法について
Profiler
Xcode Instruments
Unity MemoryProfiler
- Analyzing your application’s physical memory footprint using Memory Profiler
- Memory State
- Committed:OS 派發了 Virtual Memory,但不一定有使用到 Physical Memory,沒有 Assignment 就 Lazily
- Resident: Access Virtual Memeory -> Page Fault -> 作業系統配給 Physical Memory
- Swap: 降低 Resident,移到 Page File 或是 Compressed Memory Storage
- Physical memory footprint = Application resident memory + Application compressed memory pages
- Memory Type
- Managed memory: C#
- Graphics memory (estimated): 從圖的長寬與壓縮格式推估
- Untracked: OS reported 但 Unity 沒有資訊,像是 Native Plugin
- Native memory -> Reserved memory: allocated by Unity Memory Manager but not used by any Unity object during capture
- Memory State
- Unity MemoryProfiler 的工作机制及可能的改进
Mali Graphics Debugger
CPU
GPU
- How to optimize game performance with Camera usage: Part 1
- 【Unity】RenderMeshIndirectを使用して多量描画の負荷を抑えてみた
- UnityでRenderTextureのコピーを爆速にしたい件
- 【Unity】モバイルアプリ上で GPU 負荷を計測する
Batching
Shader Variant
- GraphicsStateCollectionについて
- Scriptable Shader Variant Stripping:Reduce 80% Build Time – 可編程著色器變體剔除:減少 80% 建置時間
- 一种Shader变体收集和打包编译优化的思路
Audio
uGUI
讀取
- Unity加载模块深度解析(网格篇)
- Accessing texture data efficiently
- Optimizing loading performance: Understanding the Async Upload Pipeline
建置時間
- The Clock’s Ticking: How to Optimize Compile Time in Unity
- アセットバンドルビルドが長い問題
- 提高 Unity Editor Heap size 可以節省大量時間
- 【Unity】コンパイル時間計測&プラットフォーム毎のコンパイルエラーチェックできるOSS『Compilation Visualizer for Unity』紹介
- ccache で Unity の生成する Xcode プロジェクトのビルドを高速化する
建置容量
CI
- DeNA
- 大規模ゲーム開発における build 高速化と安定化
- git 歷史推導 AssetBundle Rebuild 範圍
- Unity 2018-2019を見据えたDeNAのUnity開発のこれから
- Deep-Dive into Scriptable Build Pipeline
- PCにあるアセットを 実機からホットリロードする
- Aladin / Abdool
- モバイルゲームを支えるリソース管理基盤のつくりかた
- 大規模ゲーム開発における build 高速化と安定化
- Exporting a project to Gradle and building/deploying on Android Studio
GitHub Action
Troubleshooting
- FAILED TO establish the default connection to the WindowServer
- Gitlab Runner as Windows service freezed when building Unity project
AssetBundle 建置
Notarization
Scriptable Build Pipeline
- Unity Scriptable Build Pipeline
- 初めてのScriptableBuildPipeline
- Deep-Dive into Scriptable Build Pipeline
Lint
- Making our Unity Analyzers Open-Source
- Rider 2023.1: Discovering New Features for Unity Developers
- 【Unity】Unityに既存のRoslyn Analyzerを導入する手順まとめ
- GitHub Actions で unity-meta-check を利用して Unity の meta ファイルの commit 忘れを防止する
Mobile
- [2019 TGDF] Unity 手機遊戲開發防火指南
- 手機營運類遊戲筆記
- Unity3D移动平台动态读取外部文件全解析
- Making a mobile game with motion sensors in Unity
iOS
Android
- Using Play Asset Delivery in Unity games
- Troubleshooting Unity build for Android platform
- Unity Android下Streaming Assets特殊姿势
- UnityでAndroidのCameraX APIを利用して動画撮影する
- 【Unity】アプリから他のアプリを起動する【Android】
測試
- Game Automated Testing Resource Hub
- Dodging Bullets: Lightweight Automated Testing in Rollerdrome
- リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化
- gRPC 控制安裝在手機上的 Build
- Unity gRPC Build Patch: https://github.com/grpc/grpc/issues/22485#issuecomment-933666885
- Tile 16 Effective unit testing in Unity
- Unit Testing Made Easy: Unity ECS Best Practices
- How I use Test Driven Development to make games
- Unity Immediate and the Art of Automating Playthroughs
- Unity Test Runnerを活用して内部品質を向上しよう
- Airtest
- Python 介面不錯,但是影像識別 false negative 太高變成測試不可信任
Crash Handling
Symbolicate
Bug 回報
Telemetry
API
- StaticBatchingUtility
- Transform.lossyScale
- MaterialPropertyDrawer
- PropertyCallbackScope
- Application.SetStackTraceLogType
- Handles.BeginGUI
- EditorGUIUtility.PingObject
- Transform.SetSiblingIndex
- AnimatorController
- Managing importers with scripts
- PlayerLoopSystem
- ComputeBuffer.GetData
- RaycastCommand
- AssetModificationProcessor
- ShaderVariantCollection.WarmUp
Script
- Unity Patterns
- Unity Gems
- Unify Wiki
- Simple Geometry Painter for Unity
- Quit a Unity Android application
- Unityで非同期に行うスクリーンショットの取得・永続化・読み出し
- Unity-AssetDependencyGraph
- Unity – generate SpriteSheets at runtime!
Plugin
Lightmap
WebView
外部工具整合
Maya
Blender
- Blender Pythonでドット絵を3Dモデルに自動変換してUnityへ持っていく
- Rapid design iteration in Breachers using AssetPostprocessor and Blender
Houdini
Figma
Speed Tree
案例
- Unity Creator Spotlight
- 『ドラゴンクエストモンスターズ3』で実践された、多種・大量の3Dキャラクターを制作するための工夫。鍵は「仕様の共通化」と「自動化」にあり
- Spotlight Team best practices: Optimizing the hierarchy
- 2D Pixel Perfect for a crisp conquest in Skul: The Hero Slayer
- 腾讯是如何利用Unity引擎技术实现首个3A级手游画面的?
- 精彩回顾|第十二期西山居技术沙龙,LOD技术在Unity手游项目中的应用
- 『呪術廻戦 ファントムパレード』は、いかに“神を細部に宿した”のか?Unityで「史上最高峰の2Dグラフィック」に挑戦した開発環境
- 「IDOLY PRIDE」の着替えのカメラ実装の紹介
- Luaと自作ビューアで作り込んだ『ヘブンバーンズレッド』の裏側──Unityの拡張性を活かすWright Flyer Studiosの開発メソッド
- Re:Dive 制作事例 ~UIを高速かつ高品質に作るためのプロトタイプ開発のススメ!
MiHoYo
- From mobile to high-end PC: Achieving high quality anime style rendering on Unity
- 「原神」におけるコンソールプラットフォーム開発
- 【開發經驗分享】專題系列-《原神》開發及其渲染技術