質問編集履歴

3 ソースコードが間違っていた

qpalzmoknijb

qpalzmoknijb score 5

2018/06/25 22:25  投稿

UnityでPhoton接続をして同じルームに入るとプログラムが停止する
###困っていること
一人のユーザが建ててもうひとりのユーザーが入るとプログラムが以下のようなエラーを吐いて停止する。
```lang-言語名
The observed monobehaviour (PhotonManager) of this PhotonView does not implement OnPhotonSerializeView()!
UnityEngine.Debug:LogError(Object)
```
###環境
Unity 2018 1.3.f1
OS windows10
通信方式 TCP
部屋を作る側がUnity Editorを使用し、buildしたexeファイルを入る側として使用
ResourceにPhotonManagerというオブジェクトを作り下記の2つのスクリプトをアタッチして、Asset直下のResourcesに格納済み。また、下記のスクリプト2つもResourcesに格納済み
###プログラムの内容
editor側が建てたあとにbuildしたexeファイルが入る。(お互いロビーに入るが、エディタ側が建てたルームに入れない。入ろうとしたところでエラーが出てくる。)
その後、buildしたexeファイルが変数をボタンでchange()を実行して変更。(ルームに入らずに何も接続していない状態での変更を確認)
editor側で変更を確認する。
PhotonManagerServer.csでルームの作成から接続までを行う
Arrow.csで変数同期。初期値は0だが、change()を押された際にarrow = 1000に変更して同期
###ソース
PhotonManagerServer.cs
```lang-C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PhotonManagerServer : Photon.MonoBehaviour {
   private string roomName = "sababeya";
   void OnJoinedLobby ()
   {
       Debug.Log ("PhotonManager OnJoinedLobby");
       
   }
   void OnJoinedRoom() {
       Debug.Log ("PhotonManager OnJoinedRoom");
   }
   public void ConnectPhoton(){
       PhotonNetwork.ConnectUsingSettings ("1.0");
   }
   //ルーム作成
   public void CreateRoom(){
       PhotonNetwork.CreateRoom(roomName);
   }
   public void joinroom()
   {
       PhotonNetwork.JoinRandomRoom();
   }
}
```
Arrow.cs
```lang-C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ArrowRecever : Photon.MonoBehaviour
public class Arrow : Photon.MonoBehaviour
{
   public int arrow = 0;
   void OnPhotoSerializeView(PhotonStream stream, PhotonMessageInfo info)
   {
       if (stream.isWriting)
       {
           stream.SendNext(arrow);
           Debug.Log("送信ナウ");
       }
       else
       {
           this.arrow = (int)stream.ReceiveNext();
           Debug.Log("受信ナウ");
       }
   }
   void Update()
   {
       Debug.Log(arrow);
   }
   public void changer()
   {
       arrow = 1000;
   }
}
```
  • C#

    9035 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5499 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

2 プログラムの挙動について変更

qpalzmoknijb

qpalzmoknijb score 5

2018/06/25 21:56  投稿

UnityでPhoton接続をして同じルームに入るとプログラムが停止する
###困っていること
一人のユーザが建ててもうひとりのユーザーが入るとプログラムが以下のようなエラーを吐いて停止する。
```lang-言語名
The observed monobehaviour (PhotonManager) of this PhotonView does not implement OnPhotonSerializeView()!
UnityEngine.Debug:LogError(Object)
```
###環境
Unity 2018 1.3.f1
OS windows10
通信方式 TCP
部屋を作る側がUnity Editorを使用し、buildしたexeファイルを入る側として使用
ResourceにPhotonManagerというオブジェクトを作り下記の2つのスクリプトをアタッチして、Asset直下のResourcesに格納済み。また、下記のスクリプト2つもResourcesに格納済み
###プログラムの内容
editor側が建てたあとにbuildしたexeファイルが入る。
その後、buildしたexeファイルが変数をボタンでchange()を実行して変更。
editor側が建てたあとにbuildしたexeファイルが入る。(お互いロビーに入るが、エディタ側が建てたルームに入れない。入ろうとしたところでエラーが出てくる。)
その後、buildしたexeファイルが変数をボタンでchange()を実行して変更。(ルームに入らずに何も接続していない状態での変更を確認)
editor側で変更を確認する。
PhotonManagerServer.csでルームの作成から接続までを行う
Arrow.csで変数同期。初期値は0だが、change()を押された際にarrow = 1000に変更して同期
###ソース
PhotonManagerServer.cs
```lang-C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PhotonManagerServer : Photon.MonoBehaviour {
   private string roomName = "sababeya";
   void OnJoinedLobby ()
   {
       Debug.Log ("PhotonManager OnJoinedLobby");
       
   }
   void OnJoinedRoom() {
       Debug.Log ("PhotonManager OnJoinedRoom");
   }
   public void ConnectPhoton(){
       PhotonNetwork.ConnectUsingSettings ("1.0");
   }
   //ルーム作成
   public void CreateRoom(){
       PhotonNetwork.CreateRoom(roomName);
   }
   public void joinroom()
   {
       PhotonNetwork.JoinRandomRoom();
   }
}
```
Arrow.cs
```lang-C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ArrowRecever : Photon.MonoBehaviour
{
   public int arrow = 0;
   void OnPhotoSerializeView(PhotonStream stream, PhotonMessageInfo info)
   {
       if (stream.isWriting)
       {
           stream.SendNext(arrow);
           Debug.Log("送信ナウ");
       }
       else
       {
           this.arrow = (int)stream.ReceiveNext();
           Debug.Log("受信ナウ");
       }
   }
   void Update()
   {
       Debug.Log(arrow);
   }
   public void changer()
   {
       arrow = 1000;
   }
}
```
  • C#

    9035 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5499 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1 プログラムの挙動について変更

qpalzmoknijb

qpalzmoknijb score 5

2018/06/25 21:54  投稿

UnityでPhoton接続をして同じルームに入るとプログラムが停止する
###困っていること
一人のユーザが建ててもうひとりのユーザーが入るとプログラムが以下のようなエラーを吐いて停止する。
```lang-言語名
The observed monobehaviour (PhotonManager) of this PhotonView does not implement OnPhotonSerializeView()!
UnityEngine.Debug:LogError(Object)
```
###環境
Unity 2018 1.3.f1
OS windows10
通信方式 TCP
部屋を作る側がUnity Editorを使用し、buildしたexeファイルを入る側として使用
ResourceにPhotonManagerというオブジェクトを作り下記の2つのスクリプトをアタッチして、Asset直下のResourcesに格納済み
ResourceにPhotonManagerというオブジェクトを作り下記の2つのスクリプトをアタッチして、Asset直下のResourcesに格納済み。また、下記のスクリプト2つもResourcesに格納済み
###プログラムの内容
editor側が建てたあとにbuildしたexeファイルが入る。
その後、buildしたexeファイルが変数をボタンでchange()を実行して変更。
editor側で変更を確認する。
PhotonManagerServer.csでルームの作成から接続までを行う
Arrow.csで変数同期。初期値は0だが、change()を押された際にarrow = 1000に変更して同期
###ソース
PhotonManagerServer.cs
```lang-C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PhotonManagerServer : Photon.MonoBehaviour {
   private string roomName = "sababeya";
   void OnJoinedLobby ()
   {
       Debug.Log ("PhotonManager OnJoinedLobby");
       
   }
   void OnJoinedRoom() {
       Debug.Log ("PhotonManager OnJoinedRoom");
   }
   public void ConnectPhoton(){
       PhotonNetwork.ConnectUsingSettings ("1.0");
   }
   //ルーム作成
   public void CreateRoom(){
       PhotonNetwork.CreateRoom(roomName);
   }
   public void joinroom()
   {
       PhotonNetwork.JoinRandomRoom();
   }
}
```
Arrow.cs
```lang-C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ArrowRecever : Photon.MonoBehaviour
{
   public int arrow = 0;
   void OnPhotoSerializeView(PhotonStream stream, PhotonMessageInfo info)
   {
       if (stream.isWriting)
       {
           stream.SendNext(arrow);
           Debug.Log("送信ナウ");
       }
       else
       {
           this.arrow = (int)stream.ReceiveNext();
           Debug.Log("受信ナウ");
       }
   }
   void Update()
   {
       Debug.Log(arrow);
   }
   public void changer()
   {
       arrow = 1000;
   }
}
```
  • C#

    9035 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5499 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る