【Unity】Unity複数起動をメニューからできるようにしてみた

Unityを複数起動したい事が多々あり、以前はターミナルでコマンドを打って起動していましたが、面倒になったのでFileメニューに項目を追加してそこから起動できるようにしてみました。


環境

  • Unity2018.30f2
  • MacBookPro Mojave v10.14.3

準備

まず最初にFileメニューに項目を追加する為に、Editorフォルダを作りそのフォルダ内にCustomMenuFile.csスクリプトを作成しました。

ファイルの中身はこちら

Fileメニューに追加されたものがこちら



実装

使用しているEditorのパスを取得する為に、InternalEditorUtility.GetEngineAssemblyPath関数を使って取得しています。実装はこんな感じに


まとめ

メニュー追加も簡単にでき、複数起動もショートカットキーで簡単に立ち上げれるようになってとても便利になりました。普段よく使う機能をメニュー項目に追加するだけで作業効率が上がっていいですね!


参考url

【Unity】WebCamTextureを使ってみた

Unityだけでカメラアプリっぽいものが作れないかなと思って調べた所、WebCamTextureというものが用意されたいたので試しに使ってみた内容を書いていこうと思います。


環境

Unity2018.3.0f2

XCode10.1


準備

iPhoneでカメラアクセスをする為には、Info.plistにNSCameraUsageDescriptionを追記する必要があったので、下記スクリプトを用意してAssets/Scripts/Editorフォルダ内に配置しておきました。


実装1

WebCamTextureはTextureクラスを継承している為、UGUIのRawImageのtexture変数に設定すればそのまま表示されるかな?と思ったので、RawImageを使ってみました。それに加えてWebCamTextureに用意されている変数も表示してみました。

Hierarchyはこんな感じに。

スクリプトはこんな感じに。

  1. カメラ利用をユーザー確認に確認する
  2. 利用できるカメラデバイス名を取得してWebCamTextureを生成
  3. RawImageに0番目のWebCamTextureを設定しPlay関数を呼びカメラ再生を開始
  4. Update関数内でWebCamTexture情報を表示

実際にiPhoneに転送して動かしてみたのものがこちらです。

RawImageもWebCamTexture情報も表示する事ができました!


実装2

先程、実装したものはRawImageに表示された向きが意図した向きではありませんでした。調べてみるとWebCamTexture情報を使って表示向きを調整する必要がありそうという事で、表示向きを調整しつつ全画面表示にしてみました。(Textの表示は無くしています)

実行したものがこちらです。

全画面表示で向きも意図した向きになりました。


まとめ

WebCamTextureを使用すればフロント、バックカメラで映ったもの簡単に表示することができました!映っているものをカメラロールに保存したい場合はネイティブコードを書かないと駄目なようですが、単に表示するだけであれば数時間でできたしまったのでとても便利だと思います。また、PostProcessingStackを使えば見た目も簡単に変えられそうな気がします!


参考url

  • https://docs.unity3d.com/ja/current/ScriptReference/WebCamTexture.html
  • https://nil-one.com/blog/article/2018/01/30/imageanalysisusingunity03/
  • https://www.urablog.xyz/entry/2017/07/06/225444

【Unity】ペイントツールもどきを作ってみた

ペイントツールみたいなものを作ってみようと思い、今回はマウスで線が描ける所まで試しに作ってみました!


環境

Unity2018.3.0f2

Xcode10.1


実装

Texture2Dを生成し、そのテクスチャに指定した色を設定すればそれっぽくなるのでは?という事で指定する座標はマウス座標をそのまま使いたかったので、UGUIのRawImageを全画面表示する形にしてみました!

スクリプトはこんな感じに!

実行してみたものがこちらです。

点がまばらで想定したものと全然違いました・・・。塗りつぶす領域を広くしてみればいいのかな?という事で、幅と高さを設定できる形にしてみたものがこちら!

さっきより塗りつぶす領域が広くなった分、見えやすくなりましたが、線のような感じにはなっていません・・・。点と点を繋ぐ形で塗りつぶせばそれっぽくなるだろう!という事で、マウス座標を保存しておき、塗りつぶす領域を前回のマウス座標から今回のマウス座標までを塗っていく形にしてみました。

今度は、思っていた通りになりました!!


まとめ

実際にやってみると、想定と違った結果になったりもしましたが、最終的には線を描く事ができて、自分でやってみる事の大切に改めてきづけました!今回は指定した色を塗っていく形でしたが、テクスチャを元に色を塗っていく形にすればペイントツールのブラシ機能みたいなものも作れるかなと思うので、別の機会にチャレンジしてみたいと思います。

【Unity】コンパスを作ってみた

コンパスアプリを作ってみようと思って調べてみると、UnityにCompassインターフェースというもがあったので、今回はそれを使った内容を書いてみました。


環境

Unity2018.3.0f2

Xcode10.1


Compassインターフェース

enabled コンパスを有効または無効にするために使用します。Input.compass.trueHeadingプロパティーに有効な値を含ませたい場合、Input.location.Start()を呼び出してロケーションの更新を有効にする必要があります。
headingAccuracy 度単位の方向読み取りの精度
magneticHeading 磁北極に基づく度単位の進行方向 (読み取り専用)
rawVector マイクロテスラ単位の raw 地磁気データ (読み取り専用)
timestamp 進行方向が最後に更新されたときのタイムスタンプ (1970 以来の秒数)。(読み取り専用)
trueHeading 地理的北極に基づく度単位の進行方向 (読み取り専用)
スクリプトリファレンスから引用

実装

色々変数があるので、とりあえず画面に情報を出すだけのプログラムを書いてみました。

iPhoneに転送した画面がこちらです。端末を傾けると数字が変化していました。正しく動作してそうです!

次にUGUIのTextを使って東西南北と角度を表示してみました。階層はこんな形です。

※角度表示は回転してほしくない為、Rootオブジェクトには含めない

trueHeadingの値を使って、Rootオブジェクトを回転させる処理がこちらです。

端末実行したものがこちらです。

実際に動かしてみると表示がカクついていたので、targetFrameRateを60に設定し、見た目も調整して最終的にはこんな感じにしてみました。


まとめ

既にUnityで提供されているインターフェースがあり、ネイティブコードを書かなくても作ることができました。素材もUGUIのデフォルト素材を使うことで時間短縮もできあっという間にコンパスアプリが作れました!!


参考url