can't toggle mesh renderer visibility
Hi all, I've been trying to find a solution for this for almost 4 hours but still nothing. I have a character mesh which is made of multiple meshes (the hair, the shirt, the shorts). When the ChangeForm input is given, I need to turn off the shorts and shirt skinned Mesh Renderer. For some reason, I can turn it off but it won't turn on again. I also tried pacing the script in another gameobject, but still it doesn't work. using UnityEngine; using System.Collections;
 public class ToggleVisibility : MonoBehaviour
 {
 
     //VARS//
 
     private PlayerState _player;
     private InputManager _inputManager;
 
     public GameObject top;
     public GameObject shorts;
     private SkinnedMeshRenderer topMesh;
     private SkinnedMeshRenderer shortsMesh;
 
     public enum PlayerState
     {
         NormalForm,
         EtherealForm,
     }
 
     // Use this for initialization
     void Start()
     {
         _inputManager = FindObjectOfType<InputManager>();
         _inputManager.OnChangeForm += ChangeForm;
         _player = PlayerState.NormalForm;
         topMesh = top.GetComponent<SkinnedMeshRenderer>();
         shortsMesh = shorts.GetComponent<SkinnedMeshRenderer>();
     }
 
     private void ChangeForm()
     {
         switch (_player)
         {
             case PlayerState.NormalForm:
                 {
                     topMesh.enabled = false;
                     shortsMesh.enabled = false;
 
                     break;
                 }
             case PlayerState.EtherealForm:
                 {
 
                     topMesh.enabled = true;
                     shortsMesh.enabled = true;
                     Debug.Log("enabled mesh renderer");
 
                     break;
                 }
             default:
                 //if i'm here i'm dead so do nothing
                 break;
         }
 
     }
 
 }
 
 
              Answer by opporo · Jun 08, 2016 at 04:59 PM
Ok, sometimes I'm not very smart! I just forgot to change the player state once the event is triggered.
using UnityEngine; using System.Collections;
public class ToggleVisibility : MonoBehaviour {
 //VARS//
 private playerState _myState;
 private InputManager _inputManager;
 private SkinnedMeshRenderer mesh;
 public enum playerState
 {
     normalForm,
     etherealForm,
 }
 // Use this for initialization
 void Start()
 {
     _inputManager = FindObjectOfType<InputManager>();
     _myState = playerState.normalForm;
     mesh = this.GetComponent<SkinnedMeshRenderer>();
     _inputManager.OnChangeForm += ChangeForm;
 }
 private void ChangeForm()
 {
     switch (_myState)
     {
         case playerState.normalForm:
             {
                 //hide meshes
                 mesh.enabled = false;
                 _myState = playerState.etherealForm;
                 break;
             }
         case playerState.etherealForm:
             {
                 //show meshes
                 mesh.enabled = true;
                 _myState = playerState.normalForm;
                 break;
             }
         default:
             //se sono qua sono morto quindi non faccio niente
             break;
     }
 }
 
               }
Your answer
 
             Follow this Question
Related Questions
How can i apply a material to a prefab ? -1 Answers
Mesh Baker - maintaining interactivity of individual source objects 0 Answers
How can I access material of a mesh renderer without receiving and instance of it? 1 Answer
fbx Rigged Mesh has weird lightings 0 Answers
Why does skinned mesh renderer make the object looks more brigther than mesh renderer? 0 Answers