技術と趣味の亜空間

主にゲームプログラミングとその周辺に関する記事を不定期で上げていきます

Unityで .NET 4.x にするとVisual Studio Code のC#拡張が機能しなくなったので修正した話

概要

MacのUnityで .NET 4.x 系に切り替えたところ、Visual Studio Code (以下、VSCode) のC#拡張プラグイン1が機能しなくなったので、再び利用できるようにするための修正方法を備忘録も兼ねて記載します。

修正方法

  1. monoのバージョン5.8以上をインストールする。HomeBrewのコマンド brew install mono でインストールするのがおすすめです
  2. VSCodeのユーザー設定ファイルで、omnisharpを強制的にグローバルなmonoを参照するようにします。
    "omnisharp.useGlobalMono": "always"
    すると以下のようなログがでると思います
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
    Located 2 MSBuild instance(s)
        1: Mono 15.0 - "/usr/local/lib/mono/msbuild/15.0/bin"
        2: StandAlone 15.0 - "/Users/x/vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin"

[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
    Registered MSBuild instance: Mono 15.0 - "/usr/local/lib/mono/msbuild/15.0/bin"

基本的には上記でOKですが、それでもエラーが発生する場合は間違ったmono(古いやつとか)を参照している可能性があります。この問題はユーザー設定ファイルにて、omnisharpが参照するmonoのパスを指定してあげれば解決します。

"omnisharp.monoPath": "/usr/local/" または "omnisharp.monoPath": "/usr/local/Cellar/mono/5.18.0.255/" のようにバージョンで直接指定します。

iPhoneX以降のセーフエリアの見栄えをエディタ上で、かつ実行せずに確認・調整できる便利クラスを作成しました

概要

UIがiPhoneX以降のセーフエリア(Safe Area)内にちゃんと収まるような調整クラスを作成しました。
とはいえ毎回端末で確認するのも嫌だったので、エディタ上で実行せずとも直接確認できる機能も追加してみました。(実行中に適応する機能もあります)
こんな感じです↓ 縦向き・横向きどちらも対応してます。
f:id:Goropocha:20200326002846g:plain
f:id:Goropocha:20200326002848g:plain

対応端末

iPhone X, iPhone XS, iPhone XR, iPhone XS Max, iPad Pro 11, iPad Pro 12.3 (3rd generation)

続きを読む

ドローコールを発生させない透明ボタンを作るための便利クラスを作ってみた

追記 2019.7.23

Unityバージョン2018.2以降だと本記事のスクリプトを使用しなくてもドローコールを発生させない処理ができるようになっております。
やり方は以下の通り:

  1. 透明ボタン用のImageコンポーネントを作成
  2. アルファ値を0にする
  3. 同じゲームオブジェクトの Canvas Renderer コンポーネントにある「Cull Transparent Mesh」にチェックを入れる

これでドローコールが発生しない透明ボタンが作成できます。
試しにOverdrawでシーンを確認してみると、描画されていないのがわかると思います。

続きを読む

コードレスuGUIテクニック② 〜複数のテキスト間の位置調整〜

概要

ちょっとタイトルだと伝わりにくいので下のGIF動画をご覧ください。
f:id:Goropocha:20200326001855g:plain
今回は動画のように、複数のテキスト間で内容の一番長い文字列に合わせて後ろのテキストを動的に変動させることを、コードを書かずにuGUIだけで実現させます。

実装時間

3分-5分

続きを読む

コードレスuGUIテクニック① 〜動的なテキストフレーム〜

概要

下のGIF動画のように、テキストの内容に応じて後ろのフレームを動的に変動させることを、コードを書かずにuGUIだけで実現させます。

f:id:Goropocha:20200326001232g:plain
動的なテキストフレーム

実装時間

30秒くらい

続きを読む

リリース用ビルドの時だけ不要なResourcesフォルダのデータを取り除くエディタ拡張を作ってみた

概要

Unity開発において、例えばデバッグ用のプレハブデータをResourcesフォルダに入れてたりする場合、リリース用ビルドでは要らないのでビルドに含めたくない、ということがあるかと思います。
本記事ではリリース用ビルドの時だけResourcesフォルダから特定のデータを取り除く方法の一例を紹介します。

続きを読む