Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 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 owen2 · Jul 10, 2015 at 06:23 AM · c#optimizationhierarchybestpracticesdesign-patterns

Composite Design Pattern in Unity, Redundant?

Hello, I'm an experienced programmer but new to Unity and C# trying to get some experience. I've been writing some code that could in some day be an RTS and I recently finished adding unit hierarchy ie. a group of soldiers:

 - Company
   - Company HQ Platoon
      -Platoon
        - Soldier
        - Soldier
        ...
      -Platoon
      -Mortar Platoon

where each can be a single Mesh/GameObject ( a sniper ) a group of units ( platoon ) and they would know how to access their children, parent, siblings etc.

I did this using a custom Composite Design pattern when I realized that the "relatives" in GetComponentIn[Children|Parent] only refer to components on the local(right word?) GameObject and that the hierarchy in the Hierarchy Editor window doesn't seem to persist to runtime.

Is this accurate? Am I missing something easy? Profiling my composite setup seems totally fast enough, if there is a built in Unity way to do this would it be faster than mine?

Thanks for any advice!

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
Best Answer

Answer by tanoshimi · Jul 10, 2015 at 06:30 AM

You're correct that GetComponent refers to components attached to the same gameobject as the one on which the script is running, and GetComponentIn [Children|Parent] is relative to that gameobject.

However, not sure what you mean by the hierarchy "not persisting at runtime" - it does, and defines how the hierarchy is traversed using transform.FindChild, transform.Parent etc. For efficiency, you'd normally want to avoid traversing the tree too much though (and certainly avoid using Gameobject.Find to get an arbitrary member of the hierarchy) - instead caching a reference to other needed gameobjects once in the Start () method of your component.

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 owen2 · Jul 11, 2015 at 03:41 PM 0
Share

Gotcha so the hierarchy in the editor of:

Gameobject >

  • Gameobject

  • Gameobject

  • ...

affect the Transforms at runtime? I think I understand and of course about not wanting to traverse for efficiency.

Thanks.

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

2 People are following this question.

avatar image avatar image

Related Questions

Global references to important hierarchy gameobjects in singleton script, bad practice? 0 Answers

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Low Priority Methods In LateUpdate? 1 Answer

Cleaner scripting 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