質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Photon Server

Photon Serverは、オンラインゲーム開発向けネットワークエンジン。リアルタイムマルチプレイ通信のプラットフォームであるPhotonの一つで、サーバにインストールして使うサーバアプリケーションです。全てカスタマイズが可能で権限管理もできます。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

884閲覧

Unity・Photonで253イベントコードが出る

KukiyomenaisAPP

総合スコア29

Photon Server

Photon Serverは、オンラインゲーム開発向けネットワークエンジン。リアルタイムマルチプレイ通信のプラットフォームであるPhotonの一つで、サーバにインストールして使うサーバアプリケーションです。全てカスタマイズが可能で権限管理もできます。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/01/16 07:32

前提・実現したいこと

UnityとPhotonを使って、ターンベースのゲームを作っています。
「Unity Photon ターン制」で調べたところ、PunTurnManagerの存在を知りました。
認識している問題の中でこのエラーによって引き起こされているものはありませんが、それ以外のバグと関係しているのではないかと思い質問しました。

そもそもPunTurnManagerを使うのが間違っているのでしょうか。詳しい方がいたら教えていただきたいです。
また、PunTurnManagerに代わるアセットやパッケージがあるのであればそちらも教えていただきたいです。

発生している問題・エラーメッセージ

エラーの内容にはPhotonのパッケージ内の行数しか書いていないので実際にどこに問題があるのか分かりません。

UnityConsole

1Caught exception in OnEvent() for event code 253: System.NullReferenceException: Object reference not set to an instance of an object 2UnityEngine.Debug:LogError (object) 3Photon.Realtime.LoadBalancingClient:DebugReturn (ExitGames.Client.Photon.DebugLevel,string) (at Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs:2564) 4ExitGames.Client.Photon.PeerBase/<>c__DisplayClass108_0:<EnqueueDebugReturn>b__0 () (at D:/Dev/Work/photon-dotnet-sdk/PhotonDotNet/PeerBase.cs:1212) 5ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands () (at D:/Dev/Work/photon-dotnet-sdk/PhotonDotNet/EnetPeer.cs:440) 6ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands () (at D:/Dev/Work/photon-dotnet-sdk/PhotonDotNet/PhotonPeer.cs:1771) 7Photon.Pun.PhotonHandler:Dispatch () (at Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs:221) 8Photon.Pun.PhotonHandler:FixedUpdate () (at Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs:147)

該当のソースコード

実際にPunTurnManagerを使用しているコードです。

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using Photon.Pun; 6using Photon.Pun.UtilityScripts; 7using Photon.Realtime; 8 9public class ClientObj : SingletonMonoBehaviourPun<ClientObj> , IPunTurnManagerCallbacks 10{ 11 public PunTurnManager TurnManager; 12 13 14 private int MovePos_Cash; 15 // Start is called before the first frame update 16 void Start() 17 { 18 //ゲームスタート 19 TurnManager.TurnManagerListener = this; 20 if (PhotonNetwork.IsMasterClient) 21 { 22 photonView.RPC("SetCurrentState", RpcTarget.All, Enum_GameState.Setup); 23 } 24 } 25 26 // Update is called once per frame 27 void Update() 28 { 29 ForReference.Instance.Text_Scene.GetComponent<Text>().text = GameManager.Instance.game.gameState.CurrentGameState.ToString() + ":" + TurnManager.RemainingSecondsInTurn.ToString(); 30 if (PhotonNetwork.IsMasterClient) 31 { 32 //そのシーンの時にすること 33 switch (GameManager.Instance.game.gameState.CurrentGameState) 34 { 35 case Enum_GameState.Setup: 36 break; 37 case Enum_GameState.DaytimeA: 38 break; 39 case Enum_GameState.Move: 40 break; 41 case Enum_GameState.DaytimeB: 42 break; 43 case Enum_GameState.Night: 44 break; 45 } 46 //シーンがGameではない場合、オブジェクトを破壊する 47 if (GameManager.Instance.scene.GetScene() != Scenes.Game) Destroy(gameObject); 48 //GameDataの共有 49 _Sync(GameManager.Instance.game); 50 } 51 } 52 public void _SetPlayerPos(int PlusPos, int PlayerIndex) 53 { 54 photonView.RPC("SetPlayerPos", RpcTarget.MasterClient, PlusPos, PlayerIndex); 55 } 56 public void _Sync(Game game) 57 { 58 Dictionary<int, object> Data = new Dictionary<int, object>(); 59 60 61 62 photonView.RPC("Sync", RpcTarget.All, Utility.Serialize(Data)); 63 } 64 65 [PunRPC] 66 public void Sync(string str) 67 { 68 Dictionary<int, object> Data = Utility.Deserialize<Dictionary<int,object>>(str); 69 } 70 71 //Stateの変更をするときはこいつを使う PunRPCで呼ばないとバグる 72 [PunRPC] 73 public void SetCurrentState(Enum_GameState state) 74 { 75 Debug.Log(state); 76 GameManager.Instance.game.gameState.CurrentGameState = state; 77 GameManager.Instance.game.gameState.OnGameStateChanged(state); 78 } 79 80 [PunRPC] 81 public void SetPlayerPos(int PlusPos,int PlayerIndex) 82 { 83 GameManager.Instance.game.Players[PlayerIndex].Pos += PlusPos; 84 } 85 86 public int GetDiceNum() 87 { 88 return Random.Range(1, 7); 89 } 90 public void TurnStart(int Duration) 91 { 92 if (PhotonNetwork.IsMasterClient) 93 { 94 int b = (Utility.TypeToNo(GameManager.Instance.game.gameState.CurrentGameState) + 1) % Utility.GetTypeNum<Enum_GameState>(); 95 photonView.RPC("SetCurrentState", RpcTarget.All, Utility.NoToType<Enum_GameState>(b + (b == 0 ? 1 : 0))); 96 photonView.RPC("SetDuration", RpcTarget.All, Duration); 97 TurnManager.BeginTurn(); 98 } 99 } 100 101 [PunRPC] 102 public void SetDuration(int Duration) 103 { 104 TurnManager.TurnDuration = Duration; 105 } 106 107 108 109 public void OnTurnBegins(int turn) 110 { 111 112 } 113 114 //時間制限が来てもターンが終わるわけではない。 115 //ターンが終わったら実行される 116 public void OnTurnCompleted(int turn) 117 { 118 119 } 120 121 public void OnPlayerMove(Player player, int turn, object move) 122 { 123 124 } 125 126 public void OnPlayerFinished(Player player, int turn, object move) 127 { 128 129 } 130 131 public void OnTurnTimeEnds(int turn) 132 { 133 Debug.Log("OnTurnTimeEnds"); 134 if (PhotonNetwork.IsMasterClient) 135 { 136 TurnStart(5); 137 } 138 } 139 public void ButtonDown(ButtonType value) 140 { 141 if (!TurnManager.IsOver) 142 { 143 switch (value) 144 { 145 case ButtonType.Saikoro: 146 MovePos_Cash = Random.Range(1, 7); 147 break; 148 case ButtonType.Card: 149 //カードの選択画面 150 break; 151 case ButtonType.Right: 152 _SetPlayerPos(MovePos_Cash,GameManager.Instance.game.GetPlayerIndex()); 153 break; 154 case ButtonType.Left: 155 _SetPlayerPos(-MovePos_Cash, GameManager.Instance.game.GetPlayerIndex()); 156 break; 157 case ButtonType.Plus: 158 break; 159 case ButtonType.Minus: 160 break; 161 default: 162 Debug.LogError("そんなタイプない"); 163 break; 164 } 165 } 166 else 167 { 168 Debug.Log("時間切れ"); 169 } 170 } 171} 172public enum ButtonType 173{ 174 Saikoro, 175 Card, 176 Right, 177 Left, 178 Plus, 179 Minus, 180} 181

試したこと

・もうひとつプロジェクトを作り、エラーの再現をしようとしましたがうまくいきませんでした。
・Googleで253エラーについて調べてみましたが、納得のいくような結果は得られませんでした。

補足情報(FW/ツールのバージョンなど)

Unity2020.3.21f1
Pun2 ver2.40

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

普通はそのような内部的なエラーは出力されないはずです。多分 PhotonServerSettings で Network Logging を ALL にしているとかで出ているんだと思います。

補足

Photon のイベントコード 253 は PropertiesChanged です。これはソリューションを検索すれば見つけられますが、PropertiesChanged はかなり頻繁に呼ばれます。そのエラーはアセンブリの中で起きた内部的なものです。なので「どうして起きたのか」はさらに調べる必要がありますし、そこまでのコードは見えないので調べてもわからないかもしれません。

投稿2022/03/02 02:35

bboydaisuke

総合スコア5275

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問