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 Sun-Pengfei · Apr 17, 2018 at 08:17 AM · animationuianimationsstate-machinestate machine

Why does Unity animator makes calling children's SetActive fail?

I'm working on a gameObject prefab to show animations of getting a yellow star(change from grey to yellow) or losing a yellow star(change from yellow to grey), and it should also support showing only 2 status according to data(show yellow or grey star at the beginning with no animation).

My gameObject structure: ObjectA yellowStarObj(image) greyStarObj(image) testImageObj(image)

OjbectA has a script ClassA, and an animator, with 5 animations called: DoNothing, Hide, Show, Hidden, Shown. "DoNothing" does nothing, and it is the default animation. "Show" set the yellowStarObject to active, grey to inactive, and then change to Shown animation. "Shown" set the yellowStarObject to active, grey to inactive and loops. "Hide" and "Hidden" do the opposite of "Show" and "Shown".

In the script, I have these following code to manually call them and change the object to a start status according to data(shown or hidden in the beginning).

 public void Show()
 {
     animator.enabled = false; // if comment this line out, the two lines of "SetActive" won't work
     print("before setActive, yellowStarObj.activeInHierarchy = " + yellowStarObj.activeInHierarchy);
     yellowStarObj.SetActive(true);
     print("after setActive, yellowStarObj.activeInHierarchy = " + yellowStarObj.activeInHierarchy);
     greyStarObj.SetActive(false);
     testImageObj.SetActive(true); // this line always works, I think it's because it has nothing to do with the animator
 }
 
 public void Hide()
 {
     animator.enabled = false; // same
     print("before setActive, yellowStarObj.activeInHierarchy = " + yellowStarObj.activeInHierarchy);
     yellowStarObj.SetActive(false);
     print("after setActive, yellowStarObj.activeInHierarchy = " + yellowStarObj.activeInHierarchy);
     greyStarObj.SetActive(true);
     testImageObj.SetActive(false); // same
 }

Please see the comment in the code. Notice the outcome of the printing lines are always show the correct line(with animator enabled). I think it means the two gameObject setActive are working fine, but somehow the animator just changed them back to prefab status. It's very similar to my other designing approaches describe in the following paragraph.

Reason why I don't use a parameter for the animator and use the two animations(hidden/shown) to show the status, or why I don't just call Play("hidden", 0, 0) is it doesn't work. Right after I set the parameter in Start() it got changed by the animator to default. It only works if I set it after at least two frames after the animator completed initialization. The same when I use calling Play; When called play, the animation got triggered however it then switched to the default animation at the same time(by the animator I guess).

So what should I do to let the animator show the right animation in the beginning? I'm willing to change my design pattern, Thanks!

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

246 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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

Animation not rendering on canvas set to overlay 1 Answer

Invalid Layer Index? 1 Answer

Easier way of creating transitions in the animator? 1 Answer

I Need The Help Or Advice Of A Unity Animation Expert 0 Answers

Unity OnStateExit StateMachineBehaviour is never getting called 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