├── English ├── README.md └── Unity_uGUI_Advanced_Reference_English.pdf ├── LICENSE ├── README.md └── Unity_uGUI_Advanced_Reference.pdf /English/README.md: -------------------------------------------------------------------------------- 1 | # Unity uGUI Advanced Reference (English version) 2 | 3 | ## How to download 4 | 5 | Press the Download button on the [Unity_uGUI_Advanced_Reference_English.pdf](https://github.com/heppoko/Unity_uGUI_Advance_Reference/blob/main/English/Unity_uGUI_Advanced_Reference_English.pdf) 6 | (The file size is large, so the GitHub preview may not display well.) 7 | 8 | ## About the English version 9 | 10 | This document was originally written in Japanese and translated by DeepL. 11 | If you find any translation errors, incorrect source code, or broken layouts, please report them on GitHub issue. 12 | -------------------------------------------------------------------------------- /English/Unity_uGUI_Advanced_Reference_English.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heppoko/Unity_uGUI_Advance_Reference/0570fcdacc0e8408e69dc109159bd3d86f99b72b/English/Unity_uGUI_Advanced_Reference_English.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity uGUI アドバンスド・リファレンス 2 | 3 | ## ダウンロード方法 4 | 5 | [Unity_uGUI_Advanced_Reference.pdf](https://github.com/heppoko/Unity_uGUI_Advance_Reference/blob/main/Unity_uGUI_Advanced_Reference.pdf) の Download ボタンを押す(ファイルサイズが大きいので GitHub のプレビューではうまく表示できないかもしれない) 6 | 7 | ## 対象読者 8 | 9 | 本書は Unity の uGUI の基本原理を深く理解したいと願う読者のために書かれている。もし、すぐに効果が出る Tips や便利な UI アセットの紹介を期待しているのであれば、残念ながら期待外れになるかもしれない。だが、こんな経験はないだろうか? 10 | 11 | - 便利な UI アセットが特定のプラットフォームに対応していない 12 | 13 | - Unity のバージョンを上げたら便利な UI アセットが動かなくなった 14 | 15 | - 何もしていないのに便利な UI アセットが動かなくなった 16 | 17 | 本書の内容を理解することで、そのような状況に遭遇した場合でも落ち着いて対応ができるようになるだろう。 18 | 19 | また、本書の内容はパフォーマンス改善のためにも非常に役に立つはずである。たとえば、uGUI でのパフォーマンス最適化の手法としては 20 | 21 | - Canvas を分割する 22 | 23 | - 無駄な RaycastTarget を減らす 24 | 25 | - Camera.main の利用を避ける 26 | 27 | - Auto Layout の Layout Group をなるべく使わないようにする 28 | 29 | - Animation や Timeline で UI をアニメーションさせない 30 | 31 | などが一般的に知られている。本書を通読した暁には、それらの手法がなぜ有効なのかの理由を理解することができるようになるだろう。 32 | 33 | 本書では uGUI のコンポーネントのプロパティや public メソッドの解説を記述してある。これらの解説は公式リファレンスのコピーではなく、著者がソースコードを確認した上で実際に呼び出して挙動の検証を経た結果である。さらに、顕著な *GC Alloc* が発生する場合には注釈を入れている。これにより、公式リファレンスでは得られない詳細な挙動を知ることができるはずである。 34 | 35 | プログラミング言語やゲームエンジンなどのミドルウェアを深く理解する方法として、リファレンスやソースコードを一通り全部読むという方法は非常に有用である。本書を全部読破することで uGUI のみならず Unity 全般への深い理解が得られるだろう。 36 | 37 | ## 対象 Unity バージョン 38 | 39 | 本書は基本的には Unity 2020.2 を前提に書かれている。もっとも、それ以前から追加されていた uGUI の新機能についても随時触れていくつもりである。たとえば、Unity 2020.1 で導入された `Mask` コンポーネントのソフトマスク(端をぼかす機能)や UI シェーダーの乗算済み透明、レイキャスト領域のパディングなどについては知らない読者もいるかもしれない。本書を通じてそういった新機能についても学ぶことができる。 40 | 41 | ## ライセンス 42 | 43 | 本書のサンプルコードは、Unity uGUI 由来のものもオリジナルのものも全て Unity uGUI のライセンスの下で頒布する。 44 | 45 | https://docs.unity3d.com/Packages/com.unity.ugui@1.0/license/LICENSE.html 46 | 47 | 大抵の場合は製品内で Unity uGUI のライセンス表記も行っているはずなので特別なことをする必要はないだろう。 48 | 49 | ## 目次 50 | 51 | ### Chapter 1 Canvas と関連コンポーネント 52 | 53 | - Canvas の概要 54 | - Canvas コンポーネント 55 | - CanvasScaler コンポーネント 56 | - GraphicRaycaster コンポーネント 57 | - CanvasGroup コンポーネント 58 | 59 | ### Chapter 2 UI 要素と Canvas のリビルド 60 | 61 | - UIBehaviour クラス 62 | - RectTransform コンポーネント 63 | - スマートデバイスで可変解像度を実現する 64 | - CanvasRenderer コンポーネント 65 | - Graphic 関連コンポーネント 66 | - Canvas リビルド 67 | 68 | ### Chapter 3 レンダリング 69 | 70 | - Unity における描画順 71 | - レンダリングのパフォーマンス改善 72 | - シェーダー 73 | - テクスチャフォーマット 74 | - テクスチャのインポート設定 75 | - RenderTexture 76 | - 画面解像度 77 | 78 | ### Chapter 4 Graphic 79 | 80 | - Graphic コンポーネント 81 | - VertexHelper クラス 82 | - MaskableGraphic コンポーネント 83 | - タッチイベントを吸収する透明なレイヤーを作成する 84 | 85 | ### Chapter 5 画像とエフェクト 86 | - RawImage と Image の使い分け 87 | - RawImage コンポーネント 88 | - Image コンポーネント 89 | - Shadow コンポーネント 90 | - Outline コンポーネント 91 | - PositionAsUV1 コンポーネント 92 | - Mask コンポーネント 93 | - RectMask2D コンポーネント 94 | 95 | ### Chapter 6 Text とフォント 96 | 97 | - Text コンポーネント 98 | - TextGenerator クラス 99 | - フォントアセット 100 | - TrueTypeFontImporter クラス 101 | - TextMesh Pro 102 | - TextMeshProUGUI コンポーネント 103 | 104 | ### Chapter 7 Selectable 105 | 106 | - Selectable 107 | - Button コンポーネント 108 | - Toggle コンポーネント 109 | - ToggleGroup コンポーネント 110 | - Slider コンポーネント 111 | - Dropdown コンポーネント 112 | - InputField コンポーネント 113 | - Scrollbar コンポーネント 114 | 115 | ### Chapter 8 Scroll View 116 | 117 | - ScrollRect コンポーネント 118 | - Scroll View のコンテンツの設定方法 119 | 120 | ### Chapter 9 Auto Layout 121 | 122 | - Auto Layout の概要 123 | - Layout Element のサイズ決定ルール 124 | - Layout Element コンポーネントによる手動サイズ調整 125 | - Layout Controller 126 | - Layout Group 127 | - RectTranform のドリブンプロパティ 128 | - 独自の Auto Layout コンポーネントの作成 129 | - レイアウトの計算 130 | - Layout リビルドのトリガー 131 | - ILayoutElement インターフェース 132 | - ILayoutController インターフェース 133 | - ILayoutSelfController インターフェース 134 | - ILayoutIgnorer インターフェース 135 | - LayoutElement コンポーネント 136 | - LayoutGroup コンポーネント 137 | - HorizontalOrVerticalLayoutGroup コンポーネント 138 | - HorizontalLayoutGroup コンポーネント 139 | - VerticalLayoutGroup コンポーネント 140 | - GridLayoutGroup コンポーネント 141 | - ContentSizeFitter コンポーネント 142 | - AspectRatioFitter コンポーネント 143 | - Auto Layout ではなく Anchor を活用する 144 | 145 | ### Chapter 10 EventSystem 146 | 147 | - EventSystem コンポーネント 148 | - Messaging System 149 | - InputModule 150 | - StandaloneInputModule コンポーネント 151 | - BaseInput 152 | - Event Trigger コンポーネント 153 | - Raycaster 154 | - GraphicRaycaster 155 | - PhysicsRaycaster コンポーネント 156 | - Physics2DRaycaster コンポーネント 157 | - StandaloneInputModule の拡張 158 | 159 | ### Chapter 11 プロファイリング 160 | 161 | - uGUI の プロファイリングツール 162 | - Unity Profiler 163 | - Frame Debugger 164 | - CPU Usage エリアの解析と原因のパターン 165 | 166 | -------------------------------------------------------------------------------- /Unity_uGUI_Advanced_Reference.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heppoko/Unity_uGUI_Advance_Reference/0570fcdacc0e8408e69dc109159bd3d86f99b72b/Unity_uGUI_Advanced_Reference.pdf --------------------------------------------------------------------------------