Raise Event being received twice by each client in Photon
up vote
1
down vote
favorite
My Raise Event is being received twice by every client although it is only being sent once. I am using the following configuration. It doesn't matter if I send it to only one or to all the clients.
public void OnEnable()
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
Here is how I am sending the event. The event is being sent only once as I have already checked that.
object myobject = new object clicked.GetComponent<PhotonView>().viewID, "generate",clicker.GetComponent<PhotonView>().viewID ;
int actors = new int clicker.GetComponent<PhotonView>().ownerId ;
RaiseEventOptions r = new RaiseEventOptions TargetActors = actors ;
PhotonNetwork.RaiseEvent(genshieldcode, myobject, true, r)
unity3d photon
add a comment |
up vote
1
down vote
favorite
My Raise Event is being received twice by every client although it is only being sent once. I am using the following configuration. It doesn't matter if I send it to only one or to all the clients.
public void OnEnable()
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
Here is how I am sending the event. The event is being sent only once as I have already checked that.
object myobject = new object clicked.GetComponent<PhotonView>().viewID, "generate",clicker.GetComponent<PhotonView>().viewID ;
int actors = new int clicker.GetComponent<PhotonView>().ownerId ;
RaiseEventOptions r = new RaiseEventOptions TargetActors = actors ;
PhotonNetwork.RaiseEvent(genshieldcode, myobject, true, r)
unity3d photon
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
My Raise Event is being received twice by every client although it is only being sent once. I am using the following configuration. It doesn't matter if I send it to only one or to all the clients.
public void OnEnable()
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
Here is how I am sending the event. The event is being sent only once as I have already checked that.
object myobject = new object clicked.GetComponent<PhotonView>().viewID, "generate",clicker.GetComponent<PhotonView>().viewID ;
int actors = new int clicker.GetComponent<PhotonView>().ownerId ;
RaiseEventOptions r = new RaiseEventOptions TargetActors = actors ;
PhotonNetwork.RaiseEvent(genshieldcode, myobject, true, r)
unity3d photon
My Raise Event is being received twice by every client although it is only being sent once. I am using the following configuration. It doesn't matter if I send it to only one or to all the clients.
public void OnEnable()
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
Here is how I am sending the event. The event is being sent only once as I have already checked that.
object myobject = new object clicked.GetComponent<PhotonView>().viewID, "generate",clicker.GetComponent<PhotonView>().viewID ;
int actors = new int clicker.GetComponent<PhotonView>().ownerId ;
RaiseEventOptions r = new RaiseEventOptions TargetActors = actors ;
PhotonNetwork.RaiseEvent(genshieldcode, myobject, true, r)
unity3d photon
unity3d photon
edited Nov 10 at 12:20
lgwilliams
159211
159211
asked Nov 10 at 12:08
Talha
174
174
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
please try using this code, may be your event listener is being hooked twice somehow.
public void OnEnable()
PhotonNetwork.OnEventCall -= OnEvent;
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
PhotonNetwork.OnEventCall -= OnEvent; // comment this line if you need this function to be called more than once
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
New contributor
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
please try using this code, may be your event listener is being hooked twice somehow.
public void OnEnable()
PhotonNetwork.OnEventCall -= OnEvent;
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
PhotonNetwork.OnEventCall -= OnEvent; // comment this line if you need this function to be called more than once
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
New contributor
add a comment |
up vote
0
down vote
please try using this code, may be your event listener is being hooked twice somehow.
public void OnEnable()
PhotonNetwork.OnEventCall -= OnEvent;
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
PhotonNetwork.OnEventCall -= OnEvent; // comment this line if you need this function to be called more than once
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
New contributor
add a comment |
up vote
0
down vote
up vote
0
down vote
please try using this code, may be your event listener is being hooked twice somehow.
public void OnEnable()
PhotonNetwork.OnEventCall -= OnEvent;
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
PhotonNetwork.OnEventCall -= OnEvent; // comment this line if you need this function to be called more than once
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
New contributor
please try using this code, may be your event listener is being hooked twice somehow.
public void OnEnable()
PhotonNetwork.OnEventCall -= OnEvent;
PhotonNetwork.OnEventCall += OnEvent;
public void OnDisable()
PhotonNetwork.OnEventCall -= OnEvent;
public void OnEvent(byte eventCode, object content, int senderId)
{
PhotonNetwork.OnEventCall -= OnEvent; // comment this line if you need this function to be called more than once
Debug.Log("Event recieved");
if (eventCode == genshieldcode )
object mydata = (object)content;
int clickedview = (int)mydata[0];
string command = (string)mydata[1];
int clickerview = (int)mydata[2];
GameObject clicker = PhotonView.Find(clickerview).gameObject;
if (clicker != null)
if (LocalPlayerInstance != clicker)
return;
GameObject clicked = PhotonView.Find(clickedview).gameObject;
if (command == "generate")
Debug.Log("Generating Shield");
GameObject temp = Instantiate(shield);
temp.transform.position = clicked.transform.position;
else if(command =="destroy")
Debug.Log("Destroying shield");
GameObject temp = GameObject.FindGameObjectWithTag("shield");
if (temp != null)
Destroy(temp);
New contributor
New contributor
answered Nov 10 at 15:24
Pritam Samadder
11
11
New contributor
New contributor
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53238799%2fraise-event-being-received-twice-by-each-client-in-photon%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password