Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 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 rongcuid · Mar 11, 2017 at 12:04 PM · scripting problemterrainapiterraindata

Is `TerrainData.SetHeights()`permanent? If yes, how to make it non-permanent?

I am testing a C# script to change terrain data. Something as simple as this:

         float[,] heights = new float[513, 513];
         for (int i = 0; i < heights.GetLength(0); ++i)
         {
             for (int j = 0; j < heights.GetLength(1); ++j)
             {
                 heights[i, j] += 0.2f;
             }
         }
         _terrainData.SetHeightsDelayLOD(0, 0, heights);

However, I found that after a test run, the terrain is also changed in the editor. I tried restarting, and it does not help. This raise my question: Are any changes performed by SetHeight() permanent? I can't find anything describing this in documentation.

This leads to a second question: If I want the game to change a terrain within a level, but do not want the change to persist, what should I do? I can think of two:

  1. Somehow make non-permanent changes

  2. Somehow duplicate the terrain when level is loaded, and discard that at level complete.

If 1, how to do it? If 2, how feasible is it? Maybe duplicate the TerrainData and assign that to the Terrain object?

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
1

Answer by tanoshimi · Mar 11, 2017 at 12:08 PM

Terrain is an asset. That is to say, terrain data is serialised and saved as a file in your project folder - you can see it by browsing in Windows explorer. When you edit the terrain, you're making changes to that file so, yes, those changes are permenant (the same is true if you edit materials).

The solution is as you've already proposed - to duplicate the asset and make changes to that instead.

Comment
Add comment · Show 1 · 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 rongcuid · Mar 11, 2017 at 06:17 PM 0
Share

I meant in game changes, not editing. As I understand, nothing should be permanent if I don't call Save in game. Anyways, I found that the game doesn't actually change my asset, it was just the editor which keeps the last state, possibly for debugging.

avatar image
0

Answer by Maeslezo · Jul 14, 2020 at 11:39 AM

You can do something like this: terrain.terrainData = Object.Instantiate(terrain.terrainData);

Unity will instantiate a copy for you and the original will remain the same

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

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

128 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

Related Questions

Terrain Layers cannot be populated at the same time as the splats 3 Answers

Change Terrain Heightmap Resolution without Resizing Terrain 1 Answer

Runtime terrain painting with SetAlphamaps = lag 0 Answers

How to destroy Terrain-Tree-Collider? 3 Answers

Handling Terrain layers at runtime 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