- Home /
Changing properties of component without Inspector using C Sharp
Using scripts only I've added script to a gameobject, now how do I access / change the value of properties in the script I've added as a component with C Sharp ? eg
GameObject test = (GameObject)(Resources.LoadAssetAtPath("Assets/Resources/Character.FBX", typeof(GameObject)));
test.AddComponent("ThirdPersonController");
// Want to change value of idleAnimation in ThirdPersonController script to a string "Idle"
Answer by syclamoth · Oct 19, 2011 at 01:01 PM
use
test.GetComponent<ThirdPersonController>().idleAnimation = "Idle";
Or, indeed,
ThirdPersonController myController = test.AddComponent<ThirdPersonController>();
myController.idleAnimation = "Idle";
then you can keep doing operations on it.
Answer by maggot · Oct 19, 2011 at 02:23 PM
Umm I tried those solutions, but it needs to be in C Sharp. Following is my StartUp.cs script :
using UnityEngine;
using System.Collections;
public class StartUp : MonoBehaviour {
public GameObject test;
void Start() {
test = (GameObject)(Resources.LoadAssetAtPath("Assets/Resources/Character.FBX", typeof(GameObject)));
test.AddComponent("ThirdPersonController");
// Modify properties of ThirdPersonController here
// eg set value of idleAnimation to "Idle"
test.AddComponent("ThirdPersonCamera");
Instantiate(test, new Vector3(0,2,0), Quaternion.identity);
}
}
Answer by maggot · Oct 19, 2011 at 03:37 PM
Yes, but when I paste either
test.GetComponent<ThirdPersonController>().idleAnimation = "Idle";
or
ThirdPersonController myController = test.AddComponent<ThirdPersonController>();
myController.idleAnimation = "Idle";
command in after
test.AddComponent("ThirdPersonController");
I get the error :
The type or namespace name `ThirdPersonController' could not be found. Are you missing a using directive or an assembly reference?
Your thirdpersoncontroller- is it by any chance a javascript class?
This is what happens when you mix languages.
Otherwise, make sure you're spelling everything correctly, and that it's in the right place.
Damm, that is what it is. ThirdPersonController is one of the scripts supplied with Unity as part of the character controller package. I've found that Unity allows me to add the .js script as a component of a GameObject from a .cs script but not change values contained within the .js from the .cs script. I've got it working now with another C Sharp script.
Ah ok. I always try to translate any javascript files I want to incorporate into my project, for exactly this reason.
Your answer
Follow this Question
Related Questions
I'm having trouble getting the text in Unity's "text mesh" to change its text at runtime. 1 Answer
Showing properties from a base class in inspector? 0 Answers
Is there any way to change order of inherited fields in inspector? 0 Answers
components and variables - inspector problems 1 Answer
Inspector:Reference a component in Assets, not in scene. 0 Answers