- Home /
Component name variable
I would like to enable/disable certain scripts on my game objects depending on the platform.
How do i expose the component name that i want to disable, as a variable so it's not hard coded? This way i can add the same platform script on my game objects and choose what to enable/disable on each one.
var disableFlashComp :String;
function Awake() {
#if UNITY_FLASH
GetComponent(disableFlashComp).enabled = false;
#endif
}
This gives me the error BCEE0019 "'enabled' is not a member of 'UnityEngine.Component'.
Answer by Seth-Bergman · Aug 07, 2012 at 01:10 PM
gameObject.GetComponent(disableFlashComp).enabled = false;
I think this should do it
otherwise it's using Component.GetComponent
or if that still doesn't work try:
var script : disableFlashComp = gameObject.GetComponent(disableFlashComp);
script.enabled = false;
then you KNOW it's typecast to the right type
Answer by Kryptos · Aug 07, 2012 at 01:40 PM
I would suggest the opposite solution: only add component based on the plateform.
#if !UNITY_FLASH
private NotFlashComponent _comp;
#endif
void Awake()
{
#if !UNITY_FLASH
_comp = gameObject.AddComponent(NotFlashComponent) as NotFlashComponent;
if (_comp)
{
// set some default values here
_comp.myValue = 42;
}
#else
// add some other component
#endif
}
// later in the script...
void Method()
{
#if !UNITY_FLASH
_comp.SomeMethod();
#endif
}
Your answer
Follow this Question
Related Questions
How to disable/enable SSAOEffect or other specific Components? 1 Answer
How to select BoxColliders of children and disable them? 1 Answer
disable a component that script is attached too 1 Answer
Using raycast to "collide" with tagged objects & enable Halo Component 2 Answers
Is there a hidden cost of enabling/disabling something that is already in that state? 1 Answer