Más contenido relacionado Similar a 2018/01/17 第3回 HoloLens 参考書読み会発表資料 (20) 2018/01/17 第3回 HoloLens 参考書読み会発表資料6. C# がなぜ必要か
• Unity には様々なコンポーネン
トが用意されている
• ゲームオブジェクトにコンポー
ネントをアタッチすることで、
オブジェクトに機能を追加でき
る
• 既存のコンポーネントだけでは
出来ることに限りがある
• やりたいことを実現するために
は、C# Script が必要
8. Unity での C#
通常の C# プログラムでは
Main() から処理が始まる
Unity での C# Script では
Start(), Update() などの
定義されたイベント関数
を使う
class TestClass {
static void Main(string[] args) {
System.Console.WriteLine(args.Length);
}
}
public class TestClass : MonoBehaviour {
void Start()
{
// 始めに一度だけ呼ばれる
}
void Update()
{
// マイフレーム呼ばれる
}
}
9. よく使うイベント関数
Awake : シーンがロードされた直後(Start の前)
またはプレハブのインスタンス化直後
Start : Update が呼ばれるより前に一度だけ呼ばれる
Update: マイフレーム呼ばれる
OnEnable : オブジェクトが有効になったとき
OnDisable: オブジェクトが無効になったとき
参考: Unity 公式ドキュメント
https://docs.unity3d.com/ja/current/Manual/ExecutionOrder.html
12. Unity で用いる C# のクラス
利用する名前空間(ネームスペース)
このクラスの名前空間の宣言
メソッド
クラスの宣言
フィールド(メンバ変数)
プロパティ
26. C# 6.0 を使えるようにする
デフォルトでは C# 4.0
Player Settings > Other Settings で
Scripting Runtime Version を変更することで
C# 6.0 が使える
Player Settings > Other Settings で
.Net 4.6 Equivalent に変更
30. Unity 標準の UI の例
• Buttons (ボタン)
• Input Field (入力欄)
• Toggles (トグルボタン)
• Slider (スライダー)
• Dropdown (ドロップダウン)
31. UI の分類
• Input Controls
入力のための UI
ボタン、テキスト入力欄、チェックボックスなど
• Navigation Controls
ページ移動や状態表示のための UI
パンくずリスト、検索欄、アイコンなど
• Informational Controls
情報表示のための UI
ツールチップ、プログレスバー、メッセージボックスなど
32. UI のベストプラクティス
• 明快である
• 寛容で柔軟である
• ユーザーは操作を間違うこともある
• 間違っても修正可能にしておく
• シンプルに
• 目立たないものが良いインタフェース
• 見慣れたものを使う
• 一貫性を持たせる
• 似た機能には似た UI を割り当てる
33. HoloLens の UI デザイン
2D での UI デザインに比べて、
HoloLens での UI デザインは発展途上
どういった UI が良いのか、
いろいろと試してみることが大事
35. 1. ユーザーがカメラである
• ユーザーの視点が Unity 内の Main Camera の
位置に反映される
• 何かを見てもらうには、その方向を向いても
らう必要がある
• 画面外のオブジェクトには気づきづらいため、
うまく視線を誘導することが重要
36. 2. ヘッドロック (Head-Locked) を避ける
3. ボディロック (Body-Locked) を使う
• 画面のある位置に常に表示されている UI は不
快である
• UI を常に見せたい場合は、ユーザーの視点に
対し UI が遅れてついてくるようにする
( HoloLens のスタートメニューのような動作)
• HoloToolkit の Tagalong を使うとよい
37. 4. 表示するオブジェクトは最低 1-2 m 離す
Microsoft 公式ページによると
1.25 ~ 5m が最適
参考ページ:
https://developer.microsoft.com/en-
us/windows/mixed-reality/comfort#vergence-
accommodation_conflict
38. 5. 実世界にあるかのように表示する
6. 重力を使う
• オブジェクトが壁や床の上にぴったりと置か
れていたり、ものに隠れたりすると現実感が
増す
• Spatial Mapping をつかうことで、上の動作を
実現できる
• 個人的には、重力を使う場面はそれほどない
• エフェクトには効果的
40. Unity の Camera と HoloLens
ユーザー視点が Camera という点は一人称視点
のゲームに似ているが、HoloLens の場合は頭
でコントロールすることになる
Unity 内で映像を描画するための Camera と
HoloLens についている実際の Camera を混同しないように
41. HoloLens 用 Camera 設定
Clear Flags: Solid Color
(単色で塗りつぶす)
Background: 黒
Field of View(視野角): 16
Clipping Planes: Near 0.85
どうしても近くを表示したい場合
Clipping Planes の値を小さくする
48. Button を追加
Hierarchy で右クリックし、UI > Button を追加
自動的に Canvas, EventSystem が追加される
・Canvas: Unity UI を描画するエリア。
Unity UI はすべて Canvas の子要素となる
・EventSystem: マウス、タッチパネルなどのいろいろな入力方法
を扱うためのもの
シーンにひとつだけ配置する
55. UI を HoloLens 用に設定する
• Canvas を 3D 空間に配置
• EventSystem に HoloLens Input Module を追加
詳しい手順は以降のスライドで
56. Canvas の設定
Canvas の Render Mode
を World Space に変更
Rect Transform を
右図のように設定
本で指定されている
値から変更しています
64. サンプルシーン
HoloToolkit-Examples > UX > Scenes のサンプル
• GestureInteractiveExample
• InteractiveButtonComponents
• InteractiveExample
• SliderSamples
• TextPrefabSamplesTest
71. MR Desing Labs とは
• Microsoft の Windows Mixed Reality デザイン
チームが公開しているサンプルツール
• https://github.com/Microsoft/MRDesignLabs_Unity
様々なボタンのサンプル
72. MR Desing Labs の利用方法
MR Desing Labs のダウンロード
> git clone https://github.com/Microsoft/MRDesignLabs_Unity.git
> cd MRDesignLabs_Unity
> git submodule init
> git submodule update
75. Font の設定
HoloSymMDL2.ttf を Unity にインポートする
(右図では Assets > MRDsignLab > HUX
に Fonts フォルダを作成し、
その中にインポート)
MRDsignLab > HUX > Resources > Profiles にある
DefaultButtonIconProfileFont を選択
Inspector の font asset でインポートしたフォントを選択
76. サンプルシーン
MRDL_ControlsExample > Scenes に含まれている
サンプルシーン
• InteractableObject_Examples
• ManipulationGizmo_Examples
• ObjectCollection_Examples
• Progress_Examples
• SimpleDialog_Examples
• ToolTips_Examples
• ToolTips_MovingTargetExamples