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
1
Question by Sprite101 · May 04, 2012 at 05:58 PM · networkonserializenetworkview

OnSerializeNetworkView multiple variables

I'm wanting to send more than one variable back and forth across the same network, but right now I have only one script that manages those variables. Am I going to need to write an entirely new script and assign a NetworkView for every single variable I want to send back and forth?

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

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by ThibaultD · Jul 19, 2012 at 03:05 AM

You can send several variables in OnSerializeNetworkView(), like so (C#):

 stream.Serialize(ref aVariable);
 stream.Serialize(ref anotherVariable);
 for (int i = 0; i < positions.Length; i++)
 {
     stream.Serialize(ref positions[i]);
 }
 ...
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 Bunny83 · Jul 19, 2012 at 03:51 AM 0
Share

Exactly. The important thing is that you deserialize the exact same amount and types of variables you have serialized. If the size of positions can change, you should serialize the positions length before you serialize the elements. That way the receiving side can reconstruct the array, no matter how many elements.

avatar image AnXgotta · Jul 26, 2012 at 02:44 PM 0
Share

I see how you send them, do you need to receive them in any order or does unity sort them out. If it's a bit stream and if I send 4 Vector3s, how does unity know what data goes where?

avatar image ThibaultD · Jul 27, 2012 at 12:13 AM 1
Share

The same method is called to send and to receive. The objects passed as reference are automatically serialized and deserialized depending on the case. You can also use "stream.isReading" and "stream.isWriting" to distinguish the two cases.

As to how Unity knows how to split the data, I don't know but I guess all the serialized objects are packed between a header and footer that identifies this specific packet for this specific script. The important thing, like Bunny83 said, is that you should serialize/deserialize the same number and type of data, and in the same order, on writing and reading.

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

7 People are following this question.

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

Related Questions

Can you tell OnSerializeNetworkView who the owner is? 3 Answers

texture in networked game 2 Answers

OnSerializeNetworkView with multiple clients, doesn't work when syncing a float? 1 Answer

How to send a gameobject in the OnSerializeNetworkView() 0 Answers

Client to client Serialization 1 Answer


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