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 purplekjw · Aug 16, 2015 at 08:03 AM · c#gameobjectarraysort

Order a GameObject array based on an int property of each object?

 public void turnOrder () {
               
             GameObject[] playerCharacters;
     
             playerCharacters = GameObject.FindGameObjectsWithTag ("ActiveCharacter");
                 playerCharacters = playerCharacters.OrderByDescending (x => x.curAgi).ToList ();

Above is my code, and here's what I'm trying to achieve:

I'm finding all characters with the tag "ActiveCharacter" and putting them into the array of game objects "playerCharacters". The goal is to then order them based on their individual "curAgi" values, which is an integer and is unique to each of the characters.

I have used the following:

 z = (playerCharacters.Length);
 Debug.Log("ArrayLength:" + z);

To confirm that the array has in fact been populated.

The issue appears (I say appears, but it's rather blatantly obvious considering the error message I am getting and the red highlight) to be with curAgi. Despite being aware of this, I'm at a loss as to the solution. I have looked at previous questions and attempted to follow the advice therein for the past few hours, yet am still coming up blank.

Any and all assistance is very much appreciated.

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 cjdev · Aug 16, 2015 at 08:06 AM

It seems that you're trying to access a property (curAgi) that is actually in a script component of the GameObject rather than the object itself. You'd first have to use GetComponent() to get the script with the value that you're looking for in order to sort them.

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 purplekjw · Aug 16, 2015 at 06:10 PM 0
Share

Absolutely correct, however I'm still having trouble setting everything up correctly so that the list is ordered.

 public void turnOrder () {
             List<GameObject> turnList= new List<GameObject>();
             GameObject[] playerCharacters;
 
 playerCharacters = GameObject.FindGameObjectsWithTag("ActiveCharacter");
         foreach (GameObject Character in playerCharacters) {
             CharacterScript charTracker = Character.GetComponent<CharacterScript> ();

             turnList = playerCharacters.OrderByDescending(x => charTracker.curAgi).ToList ();
         }


I can return the contents of the List, but they are not being ordered. Any ideas? I must admit that I have absolutely no idea how to proceed from here.

avatar image Cherno · Aug 16, 2015 at 07:30 PM 2
Share

$$anonymous$$aybe this will help you as well, I asked it long ago :)

Sorting an Array of GameObjects by values inside these GOs

avatar image cjdev · Aug 16, 2015 at 08:36 PM 1
Share

I believe the solution is there in Cherno's answer. In your case it would be (although this is untested):

 turnList = playerCharacters.OrderByDescending(x => x.GetComponent<CharacterScript>().curAgi).ToList ();

In your example above the problem is that you're trying to order the GameObject list items by the unrelated CharacterScript list.

avatar image purplekjw · Aug 16, 2015 at 09:22 PM 0
Share

That is absolutely fantastic. I was just going over the question which Cherno linked when I saw this response, and the code you provided works perfectly.

$$anonymous$$uch appreciate the assistance!

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

[C#] Sorting a List of Gameobjects Alphabetically 2 Answers

Find GameObjects with a true boolean and put them in an array? 1 Answer

Alter a GameObjects(Clone) array from another script C# 0 Answers

Using getcomponent with an array 2 Answers

2D array of GameObjects C# 2 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