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 /
  • Help Room /
avatar image
0
Question by ninjadodo · Nov 23, 2017 at 11:19 PM · c#scripting problemmaterials

script to replace material on object with timer or button press not working

Hi,

I'm trying to do a simple blinking effect by replacing the texture/material on a character mesh with a blinking or non-blinking version of the character texture. I've looked up a couple of tutorials and explanations for changing materials and combined this with both a timer and a button press triggered material change but neither seems to work.

This is the script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class anim : MonoBehaviour {
 
     public Material[] material;
     Renderer rend;
 
     float timeLeft = 60.0f;
 
     // Use this for initialization
     void Start ()
     {
         rend = GetComponent<Renderer>();
         rend.enabled = true;
         rend.sharedMaterial = material[0];
 
         
         //var timeLeft = 60;
 
         //gameObject.GetComponent<Animation>().Play();
 
     }
     
     // Update is called once per frame
     void Update () {
 
         timeLeft -= Time.deltaTime;
         if (timeLeft < 30)
             {
                 rend.sharedMaterial = material[1];
                 //timeLeft = 30;
             }
         if (timeLeft < 0)
             {
                 rend.sharedMaterial = material[0];
                 timeLeft = 60.0f;
             }
         
         if(Input.GetKeyDown (KeyCode.Space))
             {
                 rend.sharedMaterial = material[1];
             }
         if (Input.GetKeyDown(KeyCode.Return))
             {
                 rend.sharedMaterial = material[0];
             }
     }
 }

The Material array with slots 0 and 1 appears as a component on the character object and I've assigned the two materials to a slot each. But when I run the game and wait for the timer or press SPACE or RETURN, nothing happens.

alt text

The character is a fully animated mesh with bones imported from FBX if that makes any difference.

I should note that I am very much unfamiliar with coding in Unity so I've probably missed something obvious. Any help would be greatly appreciated.

materials-unity.png (13.7 kB)
Comment
Add comment · Show 4
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 NinjaISV · Nov 23, 2017 at 11:42 PM 0
Share

Try removing all code in Update except:

 if (Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.Space)) {
 rend.shared$$anonymous$$aterial = material[1];
 }
 if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Return)) {
     rend.shared$$anonymous$$aterial = material[0];
 }

Then please let me know if the material switches when you hit Space or Return. Thanks.

avatar image ninjadodo · Nov 24, 2017 at 12:02 PM 0
Share

If I remove the timer code from Update it still does nothing when I press SPACE or RETURN.

avatar image NinjaISV · Nov 24, 2017 at 12:08 PM 0
Share

Can you post a photo of your current inspector setup on the script? (The entire inspector, including the attached renderer.) Thanks!

avatar image ninjadodo · Nov 24, 2017 at 12:08 PM 0
Share

Side note, with the timer code left in it feels like it should really be if (timeLeft = 30) ins$$anonymous$$d of < 30 but when I do that it says "Cannot implicitly convert type 'float' to 'bool'". No idea what to do about that.

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by ninjadodo · Nov 24, 2017 at 12:19 PM

alt text alt text

Here's the inspector with the character object and the script.

(unrelated side note: attaching images to posts on this forum is confusing)


inspector-object.png (52.0 kB)
inspector-script.png (41.6 kB)
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 ninjadodo · Nov 24, 2017 at 12:25 PM 0
Share

I should note also I've tested the "Astromat_blink" material by drag-and-dropping it onto the object by hand and that works (changing the texture as expected), so the material itself does not seem to be the problem.

avatar image
0

Answer by NinjaISV · Nov 24, 2017 at 12:57 PM

The problem is that you are using GetComponent to assign your Renderer. Just make the field rend public, then assign the renderer of the object to the inspector and it will work. NOTE: You must remove the code that reassigns the Renderer by getting the component. Your class should look like:

 using UnityEngine;
  
 public class anim : MonoBehaviour { 
     public Material[] material;
     public Renderer rend;
  
     float timeLeft = 60.0f;
  
     // Use this for initialization
     private void Start () {
         rend.enabled = true;
         rend.sharedMaterial = material[0];
  
     }
      
     // Update is called once per frame
     private void Update () {
         if (Input.GetKeyDown (KeyCode.Space)) {
             rend.sharedMaterial = material[1];
         }
         if (Input.GetKeyDown(KeyCode.Return)) {
             rend.sharedMaterial = material[0];
         }
     }
 }

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 ninjadodo · Nov 24, 2017 at 02:50 PM 0
Share

If I copy/paste that code, replacing the original script, it still doesn't respond to SPACE when I run the game, leaving the material at the starting default.

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

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

I create material with script but it does not render right 0 Answers

Using multiple materials on a 2d mesh 0 Answers

Problem with Score/Highscore script 0 Answers

Why object's doesn't stop on collision enter? 0 Answers

Unity Crashes When Clicking Play: Script Error? 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