- Home /
transform in a custom class
Hello everybody, this is my first post, I'm new in Unity and also in programing, then the cuestion is:
I'm trying to scale a game object, then i have the next code:
import System.IO;
import System.Threading;
#pragma strict
#pragma implicit
#pragma downcast
class mainHelper extends Behaviour{
public function gameObjectFullScreen(){
var w:float = Screen.width;
var h:float = Screen.height;
var r:float = w/h;
Debug.Log(r);
//this.transform.localScale = Vector3(r,1, 1);
transform.localScale.x = r;
}
}
And then in the gameObject script i have this other one code:
var fullScreen = mainHelper();
fullScreen.gameObjectFullScreen();
And this is the error:
NullReferenceException
mainHelper.gameObjectFullScreen () (at Assets/0scripts/class/mainHelper.class.js.js:25)
Please can someone helpme?
Thanks a lot since now.
Answer by jtorvalds · Jan 22, 2013 at 11:38 AM
Bunny83, tanks a lot for your response, and I'm sorry for my late response!
Yes, you are right, I want scale a game object to fullscreen in "x" coordenate, then the are several game objects for this reason i want do it with oop.
Thanks for the Capital Leter tip.
Hi There.
Please don't post comments as answers. Post comments by clicking the [add new comment] button, a window then open for you to type in. Answer fields are for answers only, as this is a knowledge base.
Here at Unity Answers, Answer means Solution, not Response.
You can convert this answer to a comment (or just edit your original question), you'll also get a better chance of getting an actual answer if the main list shows none or one answer in blue =]
Under the answer where it says edit | delete | more , click on more , then convert to comment
Also you don't have to wait for a moderator to approve a comment.
Answer by Bunny83 · Jan 20, 2013 at 04:16 AM
First you shouldn't derive your classes from any class that comes with Unity except MonoBehaviour and ScriptableObject (at least for runtime classes). You derived your class from Behaviour which is the base class for MonoBehaviour and all built-in behaviour components. Behaviour itself is derived from Component and components can never be created like normal classes (with the "new" keyword which you can omit in UnityScript).
The only way to create Components at runtime is to use AddComponent on a GameObject.
I'm not sure that your script should actually do. It seems you want to scale something according to the screen aspect ratio, but the way you try to use your class makes no sense at all. Can you add some more details on what you want to do?
Btw. scripts don't "have" a Transform. All Components, MonoBehaviour scripts included, have "shortcut properties" (transform is one of thwm) to make it easy to access built-in Components on the same GameObject to which the script is attached to. transform is the same as GetComponent(Transform). So these two lines do exact the same:
transform.position = XXX;
GetComponent(Transform).position = XXX;
As last hint classnames should always start with a capital letter as well as function names.