facebook twitter hatena line email

Unity/Agora/voicechat community

提供: 初心者エンジニアの簡易メモ
2022年10月25日 (火) 16:45時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「 ==agoraインストール(コミュニティ側)== #https://github.com/AgoraIO-Community/Agora_Unity_WebGL をDL #Assets/AgoraEngine/Demo/SceneHomeを開く #GameControl...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

agoraインストール(コミュニティ側)

  1. https://github.com/AgoraIO-Community/Agora_Unity_WebGL をDL
  2. Assets/AgoraEngine/Demo/SceneHomeを開く
  3. GameControllerのInspectorを開きAppIDを入力する
  4. Unityメインメニュー/File/BuildSettings/PlayerSetttings/WebGL/WebGLTemplateをAgoraTemplete2020
  5. Unityメインメニュー/File/BuildSettings/PlayerSetttings/SceneInBuildのSceneHomeとSceneHellowVideoに、チェックを追加
  6. WebGLでビルドすると、htmlがブラウザで開くのでJoinを確認

agoraSdkCWrapperなエラーが出る場合

詳細

DllNotFoundException: agoraSdkCWrapper assembly:<unknown assembly> type:<unknown type> member:(null)

UnityEditorで表示するとこのエラーが出る。WebGLでビルドしてブラウザで表示すると良い。

デモ版ソース解析

  • AgoraEngine/Demo/ButtonHandler.csに、ボタンの挙動が、記述されてる
  • AgoraEngine/Demo/TestHome.csが、テストロジック処理が、記述されてる
  • TestHome.onJoinButtonClickedが、動画音声処理
  • TestHome.onJoinAudienceが、配信受け取る(Audience)処理
  • TestHome.onJoinAudienceが通信周りロジック
  • AssetsAgoraEngine/Prefabs/AgoraEventHandlerを、ロードSceneに追加しておく。
  • Hostボタンのオンオフ処理は、Assets/AgoraEngine/Demo/TestHome.onJoinAudience.csのGameObject.Find("RoleButton")とAssets/API-Example/tools/ToggleStateButton.csあたり。Audience表示されてる時Broadcastされ、Host表示のときに、Audienceとなっている様子。
  • AgoraEngine/Demo/TestHelloUnityVideo.csが通信ロジック周りの処理が、記述されてる

動画音声オンオフ

  • AgoraEngine/Demo/TestHelloUnityVideo.csの以下部分
AudioVideoState.pubAudio = av.togglePubAudio.isOn;
AudioVideoState.pubVideo = av.togglePubVideo.isOn;
AudioVideoState.subAudio = av.toggleSubAudio.isOn;
AudioVideoState.subVideo = av.toggleSubVideo.isOn;

音声オフだと

こちらの処理になる。

gameController.onJoinButtonClicked(false);

Android時の権限追加

#if (UNITY_2018_3_OR_NEWER && UNITY_ANDROID)
	ArrayList permissionList = new ArrayList();
	permissionList.Add(Permission.Microphone);         
	permissionList.Add(Permission.Camera);   
        foreach(string permission in permissionList)
        {
            if (!Permission.HasUserAuthorizedPermission(permission))
            {                 
				Permission.RequestUserPermission(permission);
			}
        }
#endif

ビルド時の"Pointer_stringify"のエラー表示

以下エラーが出るが、動作に問題ない。

The JavaScript function 'Pointer_stringify(ptrToSomeCString)' is obsoleted and will be removed in a future Unity version. Please call 'UTF8ToString(ptrToSomeCString)' instead.
printErr @ webgl_project_audio.loader.js:1

デモから音声通話サンプル作成

AudioScene.unityを追加して、AudioScene.csを作成して、AudioScene.unityのMainCameraへ追加

using UnityEngine;

public class AudioScene : MonoBehaviour
{
    void Start()
    {
        string AppID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        TestHelloUnityVideo app = null;
        // create app if nonexistent
        if (ReferenceEquals(app, null))
        {
            app = new TestHelloUnityVideo(); // create app
            app.loadEngine(AppID); // load engine
        }
        string ChannelName = "testchannel";
        bool enableVideo = false;
        bool muted = false;
        app.join(ChannelName, enableVideo, muted);
    }
}

Assets/AgoraEngine/Demo/AudioVideoState.csのフラグを追加

public class AudioVideoStates
{
    public bool subAudio = true;
    public bool subVideo = false;
    public bool pubAudio = true;
    public bool pubVideo = false;
}

Assets/AgoraEngine/Demo/TestHelloUnityVideo.csのjoin()内の、SetupInitStateを削除