Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

unity側からUWP側の機能をつかう(改訂版)とデバッグのちょっと便利な方法(備忘録)

More than 3 years have passed since last update.

UWPのライブラリを使った時のUnityのデバッグ

UWPのライブラリを利用してUnityのアプリを作った場合、動作確認するためにはUWP側までビルドして実行しない限り動作してるのかがわからない状況になります。
私自身がUnityに慣れていないので、Unity上での動きを確認するためにデバッグしたいことがあります。ですがUWP側と連携しておりかつ、データをUWP側からデータもらう仕様の場合、確認が難しくなる状況になりました。
今回、そのあたり解決する方法を紹介したいと思います。と言ってもよくあるスタブを利用する一般的な方法です。Unity側でデバッグ中はスタブ利用して、実際のアプリではちゃんとしたクラスを利用できるようにする形で、主に自分の備忘録として残しています。

環境

今回使用した環境は以下の通りです。
Visual Studio 2015 Community Edition update 3
Unity 5.5.0P2 Personal

UWP側のライブラリを使う方法

前回Unity側でUWPのライブラリを使う方法を整理したのですが、少し見直しました。
前回作ったものはUnity自体をあまり使ったことがなかったため管理クラスをmonobehaviourと空のオブジェクトでわざわざPrefabつくっていました。
でも本当はそんなことしなくても普通にStaticクラス作ればよかったということを知りました。
修正時にインターフェース周りも変更していますが、概念は全く同じものを作っています。

修正版のソースコードはgithubに公開しています。
https://github.com/TakahiroMiyaura/UWPBridgeSamples

やり方

簡単で#ifディレクティブとスタブクラスを用意すれば解決します。
今回作っているUWP側のライブラリを利用する方法については、IUWPBridgeServiceインターフェースを実装したサービス適用クラスを実装するつくりにしています。
ですのでこのインターフェースを実装したスタブクラスをUnity側に実装し、Unityのエディタ上ではスタブクラスをサービスとして取得するようにするだけです。
以下のように「#if UNITY_EDITOR」で振り分けるだけです。
最終的にUWPアプリケーションとして動作する際にはelse側のロジックで動作するので、一度このような形で実装しておけば少しだけデバッグが楽になるかもです。
特に分業する際にUnity側が得意な人と、UWPでモジュール作る人を分けたりなどもやりやすくなると思います。

// Copyright(c) 2017 Takahiro Miyaura
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
private void Update()
{
    if (Service == null)
    {
#if UNITY_EDITOR
        // For Debug.when this application execute by unity,call this. 
        Service = new SampleStub();
#else
        // execute For HoloLens. 
        Service = UWPBridgeServiceManager.Instance.GetService<ISampleService>();
#endif
        Service.OnDetected = SetFaceObject;
    }
    Service.DetectFace();
}
miyaura
C#ベース。現在はMR関連の技術に興味あり。 Microsoft MVP for Windows Development(2018-2021)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away