Search Unity

(Help) C# visibility animation script crashes editor

Discussion in 'Scripting' started by TabuuForteAkugun, Oct 10, 2015.

  1. TabuuForteAkugun

    TabuuForteAkugun

    Joined:
    Sep 28, 2015
    Posts:
    58
    I wrote up a script for visibility animations in C# for Unity 4, since you can't keyframe them in the editor. I wrote this up to disable renderers for body groups / submeshes of the character's eyelids. I'm making a Smash Bros. fan-game, and I'm making up animations and importing assets like crazy. But Bowser's model (one of the playable fighters) has submeshes for closed eyes, half-closed and even quarter-closed eyes. I added the code to the GameObject, and used the function as an animation event.

    The compiler doesn't give me any errors. However, running it in Play mode causes Unity to hang until I force-close it with the Task Manager. Would anyone be able to point me toward the reason why this happens? I'd blame lag due to the high-poly nature of Bowser's model, but without this script, the Idle animations plays back perfectly with zero lag, even when on an animated stage mesh.

    Any thoughts?

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class Bowser_EyeLids : MonoBehaviour {
    5.  
    6.     // Event function for Bowser's animations: use this for some VISIBILITY animations.
    7.     public void changeEyes(string targetGroup){
    8.         // Define body groups.
    9.         SkinnedMeshRenderer eyesClosed = (SkinnedMeshRenderer) GameObject.FindWithTag ("Close_KoopaHeadMat00").GetComponent(typeof (SkinnedMeshRenderer));
    10.         SkinnedMeshRenderer eyesHalf = (SkinnedMeshRenderer) GameObject.FindWithTag ("HalfClose_KoopaHeadMat00").GetComponent(typeof (SkinnedMeshRenderer));
    11.         SkinnedMeshRenderer eyesQuarter = (SkinnedMeshRenderer) GameObject.FindWithTag ("QuarterClose_KoopaHeadMat00").GetComponent(typeof (SkinnedMeshRenderer));
    12.  
    13.         if (targetGroup.Equals ("Close_KoopaHeadMat")) {  // Closed eyes only.
    14.             eyesClosed.enabled = true;
    15.             eyesHalf.enabled = false;
    16.             eyesQuarter.enabled = false;
    17.  
    18.         }
    19.         if (targetGroup.Equals ("HalfClose_KoopaHeadMat")) {     // Half-closed only.
    20.             eyesClosed.enabled = false;
    21.             eyesHalf.enabled = true;
    22.             eyesQuarter.enabled = false;
    23.         }
    24.         if (targetGroup.Equals ("QuarterClose_KoopaHeadMat")) {    // Quarter closed only.
    25.             eyesClosed.enabled = false;
    26.             eyesHalf.enabled = false;
    27.             eyesQuarter.enabled = true;
    28.         }
    29.         if (targetGroup.Equals ("ClearAll")) {                    // Open Bowser's eyes.
    30.             eyesClosed.enabled = false;
    31.             eyesHalf.enabled = false;
    32.             eyesQuarter.enabled = false;
    33.         }
    34.     }
    35. }
    36.