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 /
avatar image
0
Question by Torqus · Sep 11, 2017 at 11:04 PM · coroutinesavelagthreadingspikes

Saving data question

Hi. I'm trying to save data whenever the player triggers a checkpoint, but the process takes 0.2 seconds or so and causes a lag spike that players shouldn't see. How can I make it so the process works without stopping everything else?

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
0

Answer by TheSOULDev · Sep 12, 2017 at 12:13 AM

Try using a Coroutine or saving only specific stuff. Even though the Coroutine approach will most likely fix it, you could create properties for every variable save that could run some kind of function that registers that a value has been changed. When saving, you can then deserialize, update only the values that were changed, and then serialize. Alternatively, you could write your own serializer as people generally consider C#'s default serializers to be unnecessarily slow.

Comment
Add comment · Show 4 · 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 Torqus · Sep 12, 2017 at 01:51 AM 0
Share

The thing is I'm using Easy Save and Inventory pro, they work with each other fine, I think they use serializers, at least Inventory Pro does, I'm not really pro at coding but I can probably understand a line when I read it. What I can't find is any info about using coroutines to make a process work on many frames. I mean, practically every game saves data, but I can't find any info or tutorial about how they do it. The only thing I need is for the saving to be done on the background, and I would show a logo at the top of the screen until it finishes (like the fire in dark souls or the logo in borderlands 2).

avatar image Torqus Torqus · Sep 12, 2017 at 01:53 AM 0
Share

Also I kinda had it working with a thread, but every time I activated the saving, it would save twice, then thrice. I used thread.Start() and I think that was the problem. Also I read that using threads in unity isn't safe, so I don't know if I should be doing that.

avatar image Cornelis-de-Jager Torqus · Sep 12, 2017 at 04:43 AM 0
Share

I would do what TheSOULDev said, Unity does not handle $$anonymous$$ulti Threading

Show more comments

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

76 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

Related Questions

Threads? Or just Coroutines? 0 Answers

Random lag spikes any time processor intensive tasks a scene 0 Answers

Alternative for semaphores in Unity? 2 Answers

NetworkStream.GetStream() Coroutine 1 Answer

Instantiate + Coroutine = problem 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