前回ドキュメントやサンプルを見つつ一通り動かした。
今回はPhoton周りもやってみたいのでConektonをつかっていく!
導入方法
環境
Unity
conektonの推奨Unityバージョンが分からない
noteの記事によるとConektonはUnity2019.2.11f1で開発されているらしい
Unity2018系でつかえるんだろうか?公式ドキュメントに書いてない気がする
とりあえず2019.4で使う。
AndroidにSwitchPlatformした。
conekton
unitypackageをダウンロードしてインポート。Photonとついているほうは、マルチユーザー機能を使うなら入れる。
後ろのほうで書くけど、結局unitypackageじゃなくて、プロジェクトごとクローンして開いて作業した。
zenject
unitypackageをダウンロードして入れる。これは必須。私は9.1
Photon
Photon使うときはアセットストアからPun2アセットを入れる
各種SDK入れる
私はnrealの1.2.1を入れた
動作確認は1.3.0だって。
エラー
全部入れてもエラーが31出ている
'ARSubsystems' does not exist in the namespace 'UnityEngine.XR' (are you missing an assembly reference?)とかARFoundationとかUnityのXR系のエラーが多い
→Slackを見る
ARFoundation
ARFoundationを入れたら治った。
他にもよくわからずXRPluginManagementとかいれた。多分関係ない
MobilePlayer
MobilePlayerのエラーがまだ出ている
スクリプト開くと、IPlayerにエラーが出ているので、VSCodeのデバッグ機能?で自動修正したら治った。
エラーは消えたけど、あとで実行時にエラー出たからちがったのかも
endifのあとのpublic ~~ => throw new System.NotImplementedException();がいっぱい追加されたのかな
Photonセット
PhotonのサイトでRealtime作ってIDを入れた
サンプル実行
ARUtilityDemoを実行してみる
実行はできるが、MobilePlayerでエラーが出て動かない。WASDで移動できるらしい
Nrealに切り替える
Tools>ARUtility>Symbols
Nrealにチェック入れる
エラーが出て実行できない
Assets\Conekton\ARUtility\Scripts\UseCase\ARMarkerDetector\Infrastructure\NRARMarkerDetector.cs(29,55): error CS0117: 'SessionState' does not contain a definition for 'Running'
たぶんNrealのSDK1.2.1を使っているせいかな。
SessionState.Trackingに変えたら消えた。
やっぱりUnityプロジェクトクローンすることにした
https://github.com/MESON-inc/Conekton.git
プロジェクトごとクローンしてUnity2019.4.5f1で開いて、ZenjectとPhotonを入れたら特にエラーも起きない。Nrealを入れた後↑のエラーは起きるが、それを治したらサンプルシーンも動いた。
たぶんいろいろ最初から入っているからだな・・・
プロジェクトセッティングもされているので、AndroidにSwitchPlatformするだけで、特に何もいじらなくてよかった。
サンプルシーンをビルドしてapkをnrealに入れてら動いた。
マルチプレイヤー
こちらに使い方が書いてある。基本的に何もしなくていいはず?
https://github.com/MESON-inc/Conekton/blob/develop/jp/GettingStarted-ARUtility.md
https://github.com/MESON-inc/Conekton/blob/develop/jp/GettingStarted-Multiplayer.md
[System]>SecenContectにいろいろセットする
アバター変更
アバターを変えるにはAvatarPrefabを変更する必要がある。
デフォルトはSphere*3
頭だけ変更した。
これでデモシーンをUnityで動かしてシーン確認したらちゃんと変わっていた。
実機でもシーンにカメラを置いたら、ちゃんと頭が動いているのは確認した。Nrealだと手は動いていない。
位置合わせ
複数台の位置合わせはどうやるんだろう。マーカーでやれるっぽいが、どこで設定するのか
ARCoreに変更
今手元にNrealが1台しかないので、マルチプレイヤーで来ているか分からない。
ARcoreとしてスマホにビルドしたらNrealとともにできるんだろうか。
切り替えるときはSDKを消す必要がある。
[Tips] ビルド対象を切り替える手順
別のデバイスに切り替える場合には、以下の手順を行う
1. Assets以下に現在のビルド対象のSDKがあったら削除
または、Assets以下のフォルダ名の最後に "~" や 最初に "." をつけて、Unityに無視してもらう
例 ) Assets/~Oculus、Assets/.NRSDK2. 上記に則って切り替え対象の設定に変更
エラー
Nrealのチェック外したら例のMobilePlayerのエラーが出て動かない。
試しにビルドしてAndroidスマホに入れてみたが無理だった。