eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

Unity学習の整理 連携する統合開発環境

開発環境は必要に応じて最適なものを使いたい。 Unityでアプリを開発するにあたって、選定を行った。

C#プロジェクトエディタの選定

Visual Studioの利点・欠点

  • Unityプロジェクト側にプラグインを追加せずに使える
    • Riderは専用プラグインが自動的に組み込まれる
    • 「どうしてもファイルを増やしたくない」ならこっち
  • 日本語環境がある
  • Visual Studioである
    • エディタ機能は超強力
    • Xamarin等、他の環境も使いやすい
      • 話がそれるけど、iOSのLayout Editor等の環境はVisual Studioのほうが整備されている
      • こっちに慣れておけば、同じC#のXamarinを使う際の抵抗が小さくなるかも
  • ReShaperがないとどうにもならない
    • 結局Jetbrainsのお世話になるのである
    • 有料である
  • 会社規模が大きい場合、有料となる
    • ライセンス料は結構高い

Riderの利点

  • Android StudioやGolandと同様の使いやすさ
    • ベースが同じなので、概ね同じように動作する
  • 微妙にショートカットや機能が違う
  • サンプルコードだとBreakPointにアタッチできない
    • Visual Studioならできる
    • Pluginとの兼ね合いかもしれない
    • 通常のプロジェクトなら問題ない
  • Windows, Ubuntuでは正常動作

Unityの初期設定

  • Edit > Preferences
    • External Tools > External Script Editor でRiderを選択
      • Android SDKとNDKも選択
      • SDKはUnity用にStableな環境を持っておいたほうが良いかも
      • NDKは13b限定だった
    • ndk-bundleではなく、バージョン固定で持っておいたほうが良い
  • Unity2018から正式に .Net 4.5 + C#6.0 が使用できるようになった
    • なのでそれを使う
    • Edit > Project Settings > Player から変更
  • 必要な参照は NuGet for UnityAsset Store から取得する

Reactive Extension for Unity -> UniRx

  • UnityでもRxを使いたいので導入する
  • NuGetで取得すると、古いC#バージョン向けのコードが降ってくる
    • MainThreadDispatcher等が無いので、注意する

MainThreadDispatcherの実装

  • UnityMainThreadへのアタッチ方法を確認するため、コードを読む
    • GlobalなDispatcherを登録していた
    • GameObjectが取得できるのがMainThread限定なので、その特性を利用している
    • C#世界ではなく、UnityEngine側も利用して実装されている
  • MainThreadDispatcherが登録されており、それがMainThreadのPostを担当している

リポジトリ管理

  • gitを利用する
  • Windowsを使っていると改行コードがズレるので、LFで統一
    • .gitattributeで統一しておくといい
    • Visual StudioはCRLF+BOMじゃないと正常に動作しなかった気がするけど、直ったかな?
    • このあたりはプロジェクトメンバーの構成に合わせて変化するだろう
  • Mergerを設定する
    • .gitconfig を編集する
    • UnityYAMLMerger というツールが付属しているので、PATHを通してConfigを設定する