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 birns92 · Apr 28, 2016 at 11:18 PM · gameobjectscript.mesh colliderhighlight

Keep gameobject highlighted until another gameobject is selected (multiple gameobjects)

This is a question I recently posted that has been answered. But it in this instance I have multiple Blocks in my scene

alt text

with the same scripts attached to them

 public GameObject otherobj;
 private float blueMultiply = 3.50f;
 private float redGreenMultiply = 0.50f;

 private Color originalColor;

 private void Start()
 {
     originalColor = gameObject.GetComponent<Renderer> ().material.color;
 }

 void OnMouseDown()
 {
     AddHighlight();
     RemoveHighlight();
 }

 private void  AddHighlight()
 {
     float red = originalColor.r * redGreenMultiply;
     float blue = originalColor.b * blueMultiply;
     float green = originalColor.g * redGreenMultiply;

     gameObject.GetComponent<Renderer> ().material.color = new Color(red, green, blue);
 }

 private void RemoveHighlight ()
 {
     otherobj.GetComponent<Renderer> ().material.color = originalColor;
 }

How can I bulk up my script so that I can anytime I Click a block it is highlighted. And when I click another block the original block Highlight is removed. In this example I have 8 blocks, in another example I may have more. How can I remove the highlight when any other game object is clicked

multiple-blocks.png (9.7 kB)
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
0
Best Answer

Answer by ThisTestWillDo · Apr 29, 2016 at 06:29 AM

Change AddHighlight to something like this:

private void AddHighlight () {

 ThisScriptsName[] allBlocks = Object.FindObjectsOfType <ThisScriptsName> ().gameObject;

 foreach (ThisScriptsName o in allBlocks) {
     o.GetComponent<Renderer> ().material.color = originalColor;
 }
 float red = originalColor.r * redGreenMultiply;
 float blue = originalColor.b * blueMultiply;
 float green = originalColor.g * redGreenMultiply;
 gameObject.GetComponent<Renderer> ().material.color = new Color(red, green, blue);

}

Comment
Add comment · Show 2 · 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 birns92 · Apr 29, 2016 at 07:07 AM 0
Share

Thanks for the response. When I use your code:

 ObjectHighlight[] allBlocks = Object.FindObjectsOfType  ().gameObject;
         foreach (ObjectHighlight o in allBlocks) {
         o.GetComponent<Renderer> ().material.color = originalColor;

I receive a syntax error 'System.Array does not contain a definition for 'gameObject'

avatar image birns92 · Apr 29, 2016 at 07:29 AM 0
Share

I brushed it up and got it to work!! Thank you so much! I will post my answer below yours for future reference.

avatar image
0

Answer by birns92 · Apr 29, 2016 at 07:32 AM

Using @ThisTestWillDo answer as well as this reference, here is my working updated script:

 private float blueMultiply = 3.50f;
 private float redGreenMultiply = 0.50f;
 private Color originalColor;
 private void Start()
 {
     originalColor = gameObject.GetComponent<Renderer> ().material.color;
 }
 void OnMouseDown()
 {
     AddHighlight();

 }
 private void  AddHighlight()
 {
     ThisScriptsName[] allBlocks = FindObjectsOfType (typeof(ThisScriptsName)) as ThisScriptsName[];
         foreach (ThisScriptsName o in allBlocks) {
         o.GetComponent<Renderer> ().material.color = originalColor;
 }

     float red = originalColor.r * redGreenMultiply;
     float blue = originalColor.b * blueMultiply;
     float green = originalColor.g * redGreenMultiply;
     gameObject.GetComponent<Renderer> ().material.color = new Color(red, green, blue);
 }

}

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

50 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

Related Questions

How to prevent a script on a disabled object from firing? 0 Answers

How to access a game object from a different scene? 0 Answers

Calculating Scrolling GameObject x position scrolling pass another GameObject x postion (2D Game) 1 Answer

using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers

Why don't the Prefabs in my GameObject appear? 1 Answer


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