Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by christophermrau · Oct 08, 2017 at 05:24 PM · networkingnetworknewbieclientclient-server

How should I verify that all of my client Object are created and ready after loading a new scene?

Unity newbie here.

I am playing with a networked card game. After setting up my game board I switch scenes and start a "GameManager" on the server. On Start, the GameManager shuffles and deals all my card decks. However, it seems that my networked Clients have not finished setting up their objects so my "OnChanged" handlers end up throwing NullReferenceExceptions.

 [Server]
 void StartingCards()
 {
     foreach (var player in LobbyManager.SSingleton.Players)
     {
         foreach (var deck in Decks)
         {
             var ui = deck.GetComponent<DeckUI>();
             ui.DrawNextCard();
             player.ViewedCards.Insert(0, ui.CurrentLine);
         }
     }
 }

 -------------------------------------------------------------------------------------
 [Client]
 public SyncListString ViewedCards = new SyncListString();

 public override void OnStartLocalPlayer()
 {
     base.OnStartLocalPlayer();
     ViewedCards.Callback = OnViewedChanged;
 }

 void OnViewedChanged(SyncListString.Operation op, Int32 itemIndex)
 {
     switch (op)
     {
         case SyncListString.Operation.OP_ADD:
         case SyncListString.Operation.OP_INSERT:
             var card = Instantiate(ContactCardPrefab, _discardViewer);  //At best this simply does not work since _discardViewer has not been built yet on the client. Similar scenarios will throw a Null exception
             var script = card.GetComponent<CardUI>();
             script.SetCurrentCard(item);
             break;
     }
 }

   

I have tried using the ClientScene.Ready / NetworkServer.PlayerIsReady pattern but:

  1. The documentation does not match the current class implementation (2017.1.1.p4)

  2. "Ready" only seems to indicate the connection is ready, not that all the gameObjects are constructed and ready.

So, my question is, what is the best/correct way to make sure all the players scenes are built and ready to start accepting Remote Proceedure Calls and SyncVar changes from the server? Right now, my best attempt has been to provide a command for the Players to call when they are ready. Then, my Server simply waits for all the Players to be ready. But, this seems heavy to me and I feel like the networking architecture should provide a smooth way to do this.

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

0 Replies

· Add your reply
  • Sort: 

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

163 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

NetworkServer.Send and NetworkClient.Send or synchronising on player prefab? 0 Answers

Networking functions work fine on player object, but not other objects 0 Answers

Looking for tips on identifying reason behind random client disconnects 0 Answers

Using Client.SendBytes to stream between apps 1 Answer

non-player object can't execute's "[Command]"'s attributes 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