2
1

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.

【Unity】uOSCの使い方

Posted at

UnityのOSCパッケージであるuOSCの使い方について調べました。
hecomi/uOSC: OSC server / client implementation for Unity

基本的には開発者の方が詳しい解説記事を書いてくれているので、この記事を読むよりもそちらを読む方ががいいと思います。
Unity 向けの OSC 実装を作ってみた - 凹みTips
uOSC v2 をリリースしました - 凹みTips

本記事の内容はUnityバージョン2021.2.9f1、エディタ上でのみ検証しています。

インストール

Scoped Registryからインストールする

Scoped Registryからインポートします。
/Packages/manifest.jsonに以下を追記します。

{
    "scopedRegistries": [
        {
            "name": "Hecomi",
            "url": "https://registry.npmjs.com",
            "scopes": [
                "com.hecomi"
            ]
        },
        ...
    ],
    "dependencies": {
        "com.hecomi.uosc": "2.0.3",
        ...
    }
}

Git URLでインストールする

Package ManagerのAdd package form git URL...から以下のURLを追加してインポートします。

https://github.com/hecomi/uOSC.git#upm

unitypackageでインストールする

GitHubのReleasesページからunitypackageをダウンロードし、インポートします。

Projecct Settings > Package ManagerからScoped Registryを追加して、Package Managerからインポートすることも可能です。

使い方

OSCの受信

uOscServerコンポーネントを使用してOSCを受信します。uOscServer#onDataReceivedにOSC受信時に実行するメソッドを追加します。ここではスクリプトから追加していますが、uOscServerコンポーネントのインスペクターから追加することも可能です。メソッドはメインスレッド実行されるので、Unity APIも使用可能です。

UOscServerSample.cs
using UnityEngine;
using uOSC;

[RequireComponent(typeof(uOscServer))]
public class UOscServerSample : MonoBehaviour
{
    uOscServer server;

    void OnEnable()
    {
        if (server == null)
        {
            server = GetComponent<uOscServer>();
        }
        server.onDataReceived.AddListener(OnDataReceived);
    }

    void OnDisable()
    {
        server.onDataReceived.RemoveListener(OnDataReceived);
    }

    void OnDataReceived(Message message)
    {
        if (message.address == "/uOSC/sample")
        {
            Debug.Log($"uOSC receive: {(string)message.values[0]} {(float)message.values[1]} {(int)message.values[2]}");
        }
    }
}

OSCの送信

uOscClientコンポーネントを使用してOSCを送信します。送るデータ型はintfloatstringbyte[]に対応しています。

UOscClientSample.cs
using UnityEngine;
using uOSC;

[RequireComponent(typeof(uOscClient))]
public class UOscClientSample : MonoBehaviour
{
    uOscClient client;

    void Start()
    {
        client = GetComponent<uOscClient>();
    }

    void Update()
    {
        client.Send("/uOSC/sample", "hoge", 123.456f, 100);
    }
}

まとめ

UnityのOSCライブラリであるuOSCについて解説しました。シンプルなインターフェースになっており、簡単に使い方を理解できるなという印象です。すでに開発が停止しているOSCライブラリのUnityOSCの代替として丁度いいのではと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?