0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

toio SDK for Unityでシミュレータ接続のままアプリビルドする

Posted at

概要

toio SDK for Unity v1.3で、なんとMacのUnity Editorから直接リアルのtoioコアキューブに接続できるようになりました! :tada:

これ自体も素晴らしい機能なのですが、実はこれのうれしい副作用として、逆に、ビルドしたアプリからシミュレータのキューブに接続することが簡単にできるようになっています。
これによって、toioコアキューブを持っていない方にも、どんなアプリなのか試してもらえるというメリットがあります。
以下、やり方をまとめます。

対応方法

コアキューブに接続するためのクラス(CubeManagerなど)のコンストラクタで引数のConnectType.(Auto|Simulator|Real)を切り替えるだけで、接続先を変えてくれます。
https://github.com/morikatron/toio-sdk-for-unity/blob/main/docs/usage_cube.md#4-cube%E3%81%AE%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A

  • 基本設定(ConnectType.Auto)の場合はビルド対象に応じて内部実装が自動的に変わります。 =従来動作
  • シミュレータ設定(ConnectType.Simulator)の場合はビルド対象に関わらずシミュレータのキューブが動作します。
  • リアル設定(ConnectType.Real)の場合はビルド対象に関わらずリアルのキューブが動作します。

参考:v1.3より前の方法

以前はSDK内のマクロで切り分けている箇所に手を入れる必要がありました :sweat_smile:

シミュレータのキューブの操作方法

https://github.com/morikatron/toio-sdk-for-unity/blob/main/docs/development_simulator.md#cube-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E6%93%8D%E4%BD%9C
キューブを持ち上げる必要があるアプリの場合、右クリックが要求されるので、AndroidやiOSではその辺考慮する必要があります。WebGL推奨ってことになりそうです。

Tips

GUIで設定変更する

ビルド設定としてInspectorから変更できるようにしておくと、切り替えが簡単にできて便利です。

ToioSdkConfig.cs
using UnityEngine;
using toio;

[CreateAssetMenu]
public class ToioSdkConfig : ScriptableObject
{
    private static ToioSdkConfig instance;

    public ConnectType ConnectType;

    public bool IsSimulator => ActualConnectType == ConnectType.Simulator;

    private ConnectType ActualConnectType => ConnectType == ConnectType.Auto
        ? CubeScanner.actualTypeOfAuto
        : ConnectType;

    public static ToioSdkConfig Instance
    {
        get
        {
            if (instance == null)
            {
                instance = Resources.Load<ToioSdkConfig>("ScriptableObjects/ToioSdkConfig");
            }

            return instance;
        }
    }
}

image.png

// コンストラクタ引数に使う
var cubeManager = new CubeManager(ToioSdkConfig.Instance.ConnectType);

衝突、ダブルタップなどを発生させる

UnityEditor上ではInspectorからCubeSimulatorのinternalなmethodを呼び出す形で操作することができます。
image.png

が、ビルドしたアプリではこれを触ることができません。
そのため、InspectorのGUIが呼び出しているのと同じmethodを、Reflectionで呼び出すボタンを配置します。

ToioCubeSimulatorCollisionButton.cs
using System.Reflection;
using toio.Simulator;
using UnityEngine;
using UnityEngine.UI;

public class CubeSimulatorCollisionButton : MonoBehaviour
{
    [SerializeField] private CubeSimulator cubeSimulator;
    [SerializeField] private Button button;

    private void Start()
    {
        button.onClick.AddListener(() =>
        {
            var method = cubeSimulator.GetType().GetMethod("_TriggerCollision",
                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            if (method != null)
            {
                method.Invoke(cubeSimulator, null);
            }
        });
    }
}

おわりに

開発中のゲームのシミュレータ接続ビルド

toioコアキューブお持ちでない方もぜひお試しください。
シミュレータ画面をワイプ表示している部分については、また別で記事書きます。

通常のリアルtoioコアキューブ接続ビルド

遊ぶには、最近のtoio購入でついてくるorスイッチサイエンスさんで購入する簡易プレイマットも必要です。

プレイ動画

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?