【Unity】RectTransformのインスタンスとサイズの話
僕のunityを使ったお仕事では、だいたい(というか必ず)uGUIを使って実装するのだが、uGUIのGameObject(って表現があってるかわかんないけど)って普通のTransformと違ってちょっとめんどいだんよね。
なんで、毎回作る度にどっかしらつまずくんスよ。
ってことで、今日つまずいたとこを一応メモっとく。
uGUIをインスタンス化してなんかの子にするとき
まずは、uGUIのGameObjectをprefab化して、そいつをスクリプトでuGUIのGameObjectの子にインスタンス化するとき。
いつものTransformのGameObjectを子にインスタンス化するときは
public GameObject gObj; //uGUIのGameObject
public GameObject prefabObj; //上の奴の子にするprefab
void ObjInstantiate() //関数名は適当やで
{
GameObject ui= Instantiate ((GameObject)prefabObj);
ui.transform.parent = gObj.transform;
}
とかって書くと思うんだけど、このとき
”Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.”
っていう黄色エラーが出た。
まぁ黄色だから大丈夫だと思うんだけど、会社にいるプログラムの師匠に「わーにんぐ、きもい」って言われそうだった(ってか、見たことないエラーだったから自分でもキモイと思った。)ので、解決策を探した。
んで、こういう時は
ui.transform.parent = gObj.transform;
のとこを
ui.transform.SetParent (gObj.transform);
ってしたら黄色エラーが消えるんだってさ。
uGUIのサイズをスクリプトで変えるとき
RectTransformって普通のTransformの値のほかに、サイズとかアンカーとかピボットとかが追加されている。(Transformを継承してるからposition、rotation、Scaleもある)
んで、RectTransformはScaleで大きさを変えるんじゃなくて、Sizeってのを変えることでソースのImageに大きさをあわせることが多い。(ここも日本語あってるかわからん)
そのSizeってのはインスペクターで見るとWidthとかHeightって書いてあるやつね。
Sizeはpositionとかと違ってVector2なんすよ。
で、これにスクリプトで設定するには
public RectTransform uiObj;
void UiObjSize() //関数名は適当やで
{
uiObj.sizeDelta = new Vector2 (100,100); //サイズも適当やで
}
ってしてやれば指定の大きさにできるっぽい。
マイクロソフトのHoloLens -その3 実行してみる-
はい、じゃあ作ったAppフォルダ内にある.slnをたたいてください。
Visual Stadio が起動したら実行・・・の前に
ここんところを変更しよう。エミュレータでもいいけど、HoloLens持ってる人はUSBでデバイスつないでDeviceにすると実機でできるよ。その際、アプリケーションがついでにインストールされちゃうので注意。
そして実行しよう。
こんな感じのウィンドウ出てくるけど、Retryおしてちゃっちゃと起動しよう。
すると、エミュレータが起動して、HoloLensの画面が出てくる。
とりあえずUnityの女神降臨。
まぁ実行自体は楽なんだけど、途中どこかでつまづくんだよねこれ。
今の進捗的にここらへんまでなので、HoloLensの記事はしばらくでないと思う。
かわりにUnityのプログラムとかについてつらつら書いていきます。よろしく。
ライセンスもはっときましょうねー
この作品はユニティちゃんライセンス条項の元に提供されています
マイクロソフトのHoloLens -その2 ビルドするまで-
長い長いインストールが終わったら、お楽しみの動作テスト。
だけど、これで動かなかったら悲しいよね・・・
なにがなんでも動かせるようにしようか。
とりあえず、インストールしたHoloLens用のUnity起動して、適当なプロジェクトつくろう。
ちなみに前の記事で
HoloLens専用Unityとしてインストールした方がよさそう。
マイクロソフトのHoloLens -その1 開発環境つくる- - ブログ名どんなのにしようか
と書いたけど、インストールしたUnityのショートカットにも Unity HoloLens 5.4.0f3 - HTP って書いてあるってことはそういうことなのかも。
んで、今回は単純に実行できたかどうかだけ見たいんで、ユニティちゃそにモデルになってもらおうではないか。
あ、でも長くなりそうだから今回はビルドするまでで、実行するのは次の記事からお願い。
ということで、AssetStoreからユニティちゃそをダウンロードして適当に配置してくだしあ。
んでもってここからが本題。
HoloLens用にビルドするにはいくつか設定しなければいけないことがあるそうだ。
ざっと説明すると
・Main Cameraの初期設定
・Build SettingでWindows Store書き出し
・Pleyer Settingでいろいろ設定
・Quality Settingでちょっと設定
・Projectフォルダ直下にAppフォルダを作成してビルド
・Visual Stadioを起動して実行
こんな感じ。
では、細かく刻んで説明。
Main Cameraの初期設定
なんでかは知らない部分もあるけど、MainCameraの数値は決まってるみたいなんで、インスペクター上で設定していく。設定する箇所は以下の通り。
・TransformのPositionを原点へ
・CameraのClear FlagをSolid Colorへ
・Backgroundを真っ黒(RGBA 0,0,0,0)へ
・Clipping Planesを0.3から0.85へ
Build SettingでWindows Store書き出し
HoloLensは「Windows10扱いだけど、できることはWindows Phone」みたいな感じで、基本的にWindows StoreからAppをダウンロードして使うようになってる。
なんで、UnityでもWinStore形式でかきだしてやりましょーか。
ただ、単にWindows Store形式で書き出せばいけるというわけではない模様。設定は以下の通り。
あと、まだBuildボタンは押すな。絶対だぞ。
・ SDKをUniversal10へ
・UWP Build TypeをD3Dへ
・Unity C# Projectにチェック
Pleyer Settingでいろいろ設定
一応、HoloLensもVRというか、そういう系らしいのでそういう系の設定しましょうね。ここで「項目ないし、設定できねぇじゃねぇか!」ってなったら、もう一度、今開いているUnityのバージョンを確認して、前の記事を見直してインストールしなおせ!お兄さんとの約束だ。
設定はPlayer Settingを開いて以下の通り。
・Other Settingsを開いてVirtual Reality Supportedにチェック
・Windows Holographicを追加
また、適宜、作成するAppで使用を許可する項目を選択できる。
・publishing Settingを開いてCapabilitiesの使用する項目にチェック
Quality Settingでちょっと設定
HoloLensは据え置きPCのようなハイスペックな描画は出来ないので、Qualityをおとそうね~。設定はQuality Settingを開いて以下の通り。
・defaultをクリックしてFastestに設定
Projectフォルダ直下にAppフォルダを作成してビルド
やっとビルドだよ。今回作成したUnityのProjectフォルダ直下にAppっていうフォルダ作ってBuild Settingからビルドしてね。書き出しに時間かかるけど、慌てない慌てない。
さて、これでいったん完成。
実行は次の記事で書く。
マイクロソフトのHoloLens -その1 開発環境つくる-
ものすごく退屈だったところに、先日、マイクロソフトから発売されたHoloLensが会社にやってきたので、いろいろいじってみた。
とはいえ、動作環境を作るのにものすごく時間がかかったから
とりあえず今回はセットアップの手順だけ書いとく。
まず、開発に必要なPCのスペックは
・Windows10 Pro
・4コアCPU
・8GB以上のメモリ
・DirectX 11、WDDM 1.2 driver以上をサポートするGPU
ハード的には普通のゲーミングマシンを持っているならまず問題ない。
ただ、ずっこけたのが Win10 Pro でないといけなかったところ。
なんでぇっ!?
とおもったが、どうやらHyper-VとやらがHoloLensのエミュレータに必要らしい。
これは Win10 Pro にしないと有効にできない。
Win10 Homeからアップグレードは設定から行えるので買い替える必要はないが
アップグレードすると13000円ぐらいかかるし、Microsoftアカウント作れいわれるし、かなりめんどい。
ただ、MicrosoftアカウントはHoloLens本体を使用するときにも必要なので、作っておかなければならない。
んで、ハードがそろったら今度はインストールするもの一覧
一応、公式URL >> Install the tools
・Visual Stadio 2015 Update 2
・Unity HoloLens Technical Preview Beta 10
・HoloLensEmulator
UnityはHoloLens用に書き出せるバージョンが決まっているようで
5.4.0以上ならおkってことではないらしい。
と、いうのもUnityからのビルド自体もまだβ段階なのかもしれない。
PCのCドラに新しいフォルダを作って、HoloLens専用Unityとしてインストールした方がよさそう。一番新しく安定しているものは5.4.0f3とかってバージョンらしい。
僕もこれをインストールした。
(追記)
インストールに注意するとこ、もう一つだけあった。
Visual Stadioをインストールする際に、チェックしておかなければいけに項目がある。
タブレットとかの書き出しに必要な奴だと思う。これに注意。
話を戻して
あとインストール時に注意するところは、エミュレータは最後にインストールしなきゃいけないところぐらい。
これで、大体は大丈夫。
だが、インストールはめちゃめちゃ時間がかかるので、耐えながら待つべし。
HoloLensを持っていない人でもエミュレータをつかえばPC上で動かせるので
来年、日本向けに発売される前に準備しておける。
次はエミュレータの起動方法とかUnityで書き出す方法とか書くよ。
unity以前の話
大学でプログラムとかちょこっとやってます!!!!!!!
なんて、でかい声で入社したくせにC#のCの字(割合でかすぎなのは誤解)も知らなかったので、ちょっとした恥をかいたことがあるんすよね。
やってた事は嘘じゃないよ!
で、どんな恥をかいたかというと
「コンストラクタってなんすか?」って聞いたこと。
うん、君、プログラムやったことないよねwww
それも、まぁそのはずで、大学では
どういう仕組みで初期化されているのか
そもそも、なんで初期化しなきゃいけないのか
なーんてことは、教えてもらう機会も知ろうとも思う機会もなかった。
ということで
この夏ちょこっと勉強して、また少しだけ賢くなった。
実は、まだ完全に理解したわけじゃないけど
なんでみんなが new Vector3 なんて書かなきゃいけないかは理解できた。
コンストラクタとかデストラクタとかは他のサイトに詳しく書いてあるので
URLをはっつけて終了。