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