Open13
Unity Memo

Skills
-
UniRx
-
UniRx.Trigger
-
Monobehaviour の継承
-
TMPro
- Font Asset Creator
フォント取り込み後、豆腐になった件 → Atlas Size を適切に変更
- Font Asset Creator
-
Prefab の扱い
- Instantiaite、親構造、ObjectPool 他
-
DoTween
- 別記
Favorite Assets
- UniRx
- HotReload
- DoTween

Memo
コンパイルの随時起動オフ + プレイモード時に自動更新ON
Horizontal Group Layout > パフォーマンス考慮するなら無し
ProjectSettings 覚え
Editor > Root namespace

OnMouseDown OnMouseUp OnMouseDragg が複数回呼び出される問題について
解決方法: 別の関数名をつける or 独自Interface を辞める

DoTween
- .DOScale
- .SetEase
- .OnComplete
- .Complete
- IsComplete
- IsPlaying
- IsActive
- duration = second(s)
課題
- currentTween どこからでも参照してしまう問題

C#
null合体代入演算子
tween ??= transform.DOScale(originalScale * zoomScale, duration).SetEase(Ease.InOutQuart);
三項演算子
float zPosition = _card.IsMouseOnObject.Value ? 0 : i * zPadding + 1;

座標系
マウスカーソルに追従する処理をUniRxで実装
前提
マウスカーソル位置のサンプリング (Stream)
追従FPSの決定

よく使う数字、忘れやすい数字チートシート
Frame -> Seconds 変換表
Frame | 60FPS | 30FPS |
---|---|---|
1 | 0.01666... | 0.03333... |
2 | 0.03333... | 0.06666... |
3 | 0.05 | 0.1 |
4 | 0.06666... | 0.13333... |
5 | 0.08333... | 0.16666... |
10 | 0.16666... | 0.33333... |
15 | 0.25 | 0.5 |
30 | 0.5 | 1 |
60 | 1 | 2 |

UniRx メモ

Template について(というか RenderPipelineについて)
- Built-in Render Pipeline
- Scriptable Render Pipeline
# | desc | memo |
---|---|---|
1 | Built-in Render Pipeline | |
2 | Scriptable Render Pipeline | URP と HDRP |
3 | Universal Render Pipeline | 比較的軽量 |
4 | High Definition Render Pipeline | 写実的な表現力、比較的高コスト |

命名規約など
プロジェクト名、クラス名(スクリプト名)
- パスカルケース
コード
- プロパティ
- パスカルケース
- プライベート変数
- 頭 "_"
- キャメルケース
- 定数
- 大文字 スネークケース
ネームスペース
- パスカルケース
- フォルダ構造と同等にする

疑問と解決と実行について
独自クラスのListをSerializeField で確認したい場合
- 対象クラスに [System.Serializable] 属性を付与
~Manager を同一シーン上に複数配置しない対策
- シングルトン (シーンをまたいで保持する場合)
- 動的に生成
- エディタスクリプトで管理
- [DisallowMultipleComponent] の利用(手動で重複を制限)

gameObject 関連チートシート
Instantiate
ソース
public void DisplayAnswer(Answer answer)
{
// Create a new entry from the prefab
GameObject entry = Instantiate(answerEntryPrefab, canvas.transform);
// Assuming answerEntryPrefab has a script to update its UI
if (entry.TryGetComponent<AnswerEntryUI>(out var entryUI))
{
entryUI.UpdateUI(answer);
entry.transform.localPosition = new Vector3(offsetX + (answerHistory.Count * paddingX), offsetY + (answerHistory.Count * paddingY), 0f);
//
answerHistory.Add(entry);
}
}