Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Natos · Jul 01, 2015 at 09:55 AM · c#gameobjectnetworkingmultiplayernetwork

How to synchronize GameObjects

Hello, First of all, sorry if I make any mistakes, it's not my mother tongue, and if my questions is silly. With the new network system, I tried to do a little game that goes like this : The player connects to the server, then pick up a hero, click on a button ("Go") and can play.

But here is my problem : the first player connected will see the second player connected's hero while the second player won't see the first player's hero. I know that the fact that the first player see the second's player hero is due to this command (when he clicks on the "Go" button):

 public GameObject champ1;
 public GameObject champ2;
 
 [Command]
 public void CmdChampSelected(int i)
 {
     switch (i)
     {
         case 1:
             champ1.SetActive(true);
             break;
         case 2:
             champ2.SetActive(true);
             break;
     }
 }

i is the number of the selected champion.

And I don't understand why it won't do anything if I relaunch it with the first player.

The prefab of the player spawned by the NetworkManager contains the two champions, disabled, and one of them is unable when the player click on the "Go" button after making his choice.

I'm trying to understand all the [command], [SerializedField], [ClientCallback] thing so I maybe did a huge mistake in my code, but I can't see where.

By advance, thank you.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Natos · Jul 03, 2015 at 07:33 AM

Ok, I found the solution ! Finally !

You have to use ClientRpc like that :

  1. Your command will call your ClientRpc

  2. All the actions will be executed in the Rpc

BAM ! It works ! Hope it helped you ! :)

You will maybe have to associate that action to a key or in a Coroutine to synchronise when you want if it doesn't work the first time.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by seanr · Jul 01, 2015 at 03:52 PM

the state of child objects is not included in the network information for spawned objects.

You could put a SyncVar on the object to hold "championId", then in OnStartClient active the champion on the client.

Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Natos · Jul 01, 2015 at 04:47 PM 0
Share

Hello and thank you for your help. I tried it, adding this to the class, and it didn't work. (I don't have any error in the console) Sorry if I miss understood the solution you were proposing.

[SyncVar] private int selectedChampion;

 void OnStartClient()
 {
     selectedChampion = canvas.GetComponent<CharacterChoice>().champSelected;
     switch (selectedChampion)
     {
         case 1:
             champ1.SetActive(true);
             break;
         case 2:
             champ2.SetActive(true);
             break;
     }
 }

avatar image seanr · Jul 01, 2015 at 04:57 PM 0
Share

Is CharacterChoice a NetworkBehaviour?

avatar image Natos · Jul 01, 2015 at 06:04 PM 0
Share

No, it's a $$anonymous$$onoBehaviour. Should I change it to NetworkBehaviour ? I'm affraid that it will mess with the script.


I changed it to NetworkBehaviour but it still doesn't work.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Unity networking tutorial? 6 Answers

Multiplayer desynchronize when grabbing an object by code. 0 Answers

Unity3D Photon movement synchronization 0 Answers

Pushed back when applying NetworkTransform 1 Answer

How To Deal With Lingering Prefabs in Multiplayer Scene ? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges