スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

uGUIのTips

はじめに


UnityでGUIを作る機会があったので、uGUIについて勉強しました。
Textを拡大するとぼけるとか、消えるとか引っかかる部分があったので、対処法をTipsとしてまとめました。

参考


参考図書は「UnityゲームUI実践ガイド 開発者が知っておきたいGUI構築の新スタンダード」です。
残念ながらサンプルプロジェクトのページはリンク切れですが、基本的なuGUIの使い方が記載されており、初心者にはとても勉強になります。Unity 5で書かれていますが、Unity 2017でも特に問題なく参考にできます。


Tips


基本となる端末の解像度に合わせてUIを拡大縮小する

  •  Canvas Scalerコンポーネントの「UI Scale Mode」を「Scale With Screen Size」に変更
  •  CavasScaler1.png CavasScaler2.png 

UIを編集するときは2Dモードにする

 2Dmode.png

uGUIスクリプトの拡張

UIの大きさ

  • Textなどは大きく表示されるため、Scaleを0.01くらいにする必要がある

Textを大きく表示すると汚い

  1. FontSizeを変更する
  2. Textの代わりにTextMeshProを使用する

TextのFont Sizeを変更すると表示されなくなる

  • [Height]の数値を[Font Size]の1.2倍以上にする必要がある

Textのアウトラインを表示したい

  1. Outlineコンポーネントをアタッチする。上下左右にずらしてアウトラインを実現しているっぽい
  2. TextMeshProを使う

InputFieldの入力文字を制限したい

  • ContentTypeを選択する
  • InputField_ContentType.png

自動でレイアウトしたい

EventTriggerコンポーネントはあらかじめ各UIで用意されている以外のイベントに使う

  • OnValuChangeとかOnClickとか以外
  • イベント一覧
  • EventTriger.png 

RectTransformをスクリプトでいじる

  • 位置変更
RectTransform rectTransform = GetComponent();
rectTransform.anchoredPosition = new Vector2(0, 0);
  • 大きさ変更
int width = 100;
int height = 100;
RectTransform rectTransform = GetComponent();
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);

独自UIをスクリプトから生成するときの注意

  1. RectTransformを追加
    • gameObject.AddComponent();
  2. Canvasオブジェクトの下層になるように配置する

曲線をインスペクターで設定する

  • AnimationCurve変数を使う
スポンサーサイト

UnityでTimeクラスもどきを作る

UnityのTimeクラスはどのクラスからでもフレーム番号や時間を取得できるのがとても便利です。
同じことをしようとしたらどのように実装すればよいか試しに実装してみました。

以下の2つに気を付けて実装してみました。
・シングルトンを使用する
・puclic static変数で値にアクセスさせる

Counter.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 概要
// 毎フレームカウントアップする
// フレーム番号にどのクラスからでもアクセス可能
// シングルトンでこのコンポーネントは1つしかインスタンスが作成できない
public class Counter : MonoBehaviour {
public static Counter instance;
public static int frame = 0;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(this);
}
}

void Update () {
frame++;
}
}


useCounter.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class useCounter : MonoBehaviour {
// Update is called once per frame
void Update ()
{
Debug.Log(Counter.frame);
}
}


HoloLens Holographic Remotingの利用方法

はじめに

Holographic RemotingはPCでレンダリングしたデータをWi-fiでHoloLensに転送する機能です。これを利用することで、HoloLensのCPU、GPUなどの性能に縛られて実現できなかったこともできるようになります。また、PC上で動かすことができれば、KinectやViveのコントローラーなど、周辺機器やセンサーを利用することもできるかもしれません。
今回はUnityでHolographic Remotingを利用する方法について書きました。これによりUnity EditorのプレビューがHoloLensで表示できるようになります。エディター上でオブジェクトを動かすことで、目の前の(HoloLensで表示した)オブジェクトが自由に動かせるので楽しいです。

参考
Holographic Remoting Playerドキュメント
Microsoft HoloLens(現在利用できない)

参考動画:こんな感じのことができるようになります

Holographic Remotingを使ってみる


用意するもの

  • PC(Windows 10 Anniversary Update, GPU:GeForce GTX 970 or AMD Radeon R9 290以上)
  • Unity 5.5.0b4 (64-bit)
  • HoloLens Development Edition
  • HoloTookkit-Unity(必須ではない)
  • Wi-fi環境(HoloLensとPCは同じネットワークにいる必要があります)

HoloLens側の準備

ストアからHolographic Remoting Playerをダウンロードして立ちあげます。
立ち上げると以下のような画面が表示されます。この場合「192.168.0.1」がHoloLensのIPアドレスです。
後でPCと接続するのに使用します。
HolographicRemotingPlayer.png


PC側の準備

  1. Unity 5.5.0b4 (64-bit)を起動して新規プロジェクトを作成します
  2. HoloTookit-Unityをインポートします(AssetsフォルダにHoloTookkit-UnityのAssetsフォルダをコピー)
  3. Build Settingsを開いてWindows Storeを選択し、「UnitySetup-Metro-Support-for-Editor-5.5.0b4.exe」をDownloadしてインストールします
  4. Unityのプロジェクト、シーンをHoloLens用の設定にします(HoloToolkit-Configure-Apply HoloLens Project SettingsとApply HoloLens Scene Settingsをクリック)
  5. HoloToolkit.png
  6. 実行時の確認用に適当なオブジェクトをシーンに追加します
  7. Player SettingsでVirtual Reality Supportedにチェックを入れ、Windows Holographicが追加されていることを確認します
  8. Holographic Simulation and Remotingウインドウを開きます(Window-Holographic Simulation and Remotingをクリック)
  9. Holographic Simulation and Remoting1
  10. Remote Deviceを選択します
  11. Holographic Simulation and Remoting3
  12. HoloLensのIPアドレスを入力してConnectをクリックします
  13. Holographic Simulation and Remoting4
  14. Unity Editorのプレイボタンをクリックすると、HoloLensにオブジェクトが表示されます!

トラブルシューティング


・"You must ve running Windows buikd 14318 or later to use simulation or remoting"とエラーが出る。
 Windows 10のAnniversary Updateが適用されていません。Windows Updateを行ってください。Updateには結構時間がかかります。

おわりに


Holographic Remotingを使用すると、Unity Editorで変更した結果をリアルタイムにHoloLensの表示に反映することができます。これまでは、アプリを変更するたびにビルドして転送しなければならなかったのですが、その手間がなくなるため、HoloLens用のアプリ開発がぐっとやりやすくなったように感じます。PC上でしか実行できないようなセンサーやデータが使用できるようになれば用途もさらに広がると思います。デメリットとしてはWi-fiを経由でデータをやり取りすることになるため、少し遅延が発生してしまうことだと思います。とはいえ、これを使うことによる開発のしやすさは大きなメリットでしょう。HoloLens開発者の皆様はぜひ一度試してみることをお勧めします。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。