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)









share|improve this question



























    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)









    share|improve this question

























      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)









      share|improve this question















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 10 at 12:20









      lgwilliams

      159211




      159211










      asked Nov 10 at 12:08









      Talha

      174




      174






















          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);










          share|improve this answer








          New contributor




          Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.

















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            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






























            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);










            share|improve this answer








            New contributor




            Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.





















              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);










              share|improve this answer








              New contributor




              Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.



















                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);










                share|improve this answer








                New contributor




                Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                 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);











                share|improve this answer








                New contributor




                Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                share|improve this answer



                share|improve this answer






                New contributor




                Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                answered Nov 10 at 15:24









                Pritam Samadder

                11




                11




                New contributor




                Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.





                New contributor





                Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






                Pritam Samadder is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    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














































































                    這個網誌中的熱門文章

                    How to read a connectionString WITH PROVIDER in .NET Core?

                    In R, how to develop a multiplot heatmap.2 figure showing key labels successfully

                    Museum of Modern and Contemporary Art of Trento and Rovereto