x


Help converting javascript to ios iphone scripting

I have a large unity3d javascript script I am trying to run on iphone. I'm getting tons of errors about variables not having their types defined. If I put # pragma strict at the top of the script it shows the errors in the unity compiler console.

My question is do I have to redefine all these using var? Or is there some shortcut setting that I can use to bypass all the errors?

What about arrays? Right now I have javascript Arrays like myarray=new Array(); Should I just use something like myarray=Vector3[];

I have an array full of rotations. What kind of array is that? Quaternions, Vector4? I use lots of hashtables how do I define ahead of time what's going in those?

What about functions? Some functions complain others do not. Do I define the arguments in the function declaration?

function myfunction(a:int,b:int);

Is there any documentation that says everything you have to do to go from javascript to iphone? -- things like eval() does not work, or that you have to define every variable etc... use built in arrays, etc...

Thanks,

more ▼

asked Feb 27 '12 at 12:47 AM

dansav gravatar image

dansav
373 104 131 154

How would I do an array of hashtables on iphone? animations=new Array(); animations[0]=new Hashtable();

Feb 27 '12 at 01:01 AM dansav
(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

Never use Array, never use Hashtable. If you have a fixed-size array, use int[], Vector3[], etc. (As for rotations, look in the docs, it always tells you the type of everything.) If you have a variable-sized array, use List. Use Dictionary instead of Hashtable. And yes, you must always define the types in a function declaration.

more ▼

answered Feb 27 '12 at 01:23 AM

Eric5h5 gravatar image

Eric5h5
80.1k 41 132 519

Yeah forgot to mention that as well. As far as i knew you always had to define the types and return types for functions, how is it possible to not do so?

Feb 27 '12 at 01:26 AM Default117

Dictionary and List are .net functions? is that correct, not unity?

Feb 27 '12 at 01:30 AM dansav

You don't have to define types if the compiler can infer it from the value supplied.

var foo = 5;  // foo is an int
var foo = .5;  // foo is a float

function TrueOrFalse () {
    return (Random.value < .5);
}
// TrueOrFalse is a boolean

The type doesn't change at runtime so it's not dynamic typing. What you should not do is this, because the type can't be inferred:

function Blah (x, y)

Instead,

function Blah (x : int, y : int)

Dictionary and List are .net, yes. It's the same as C# except for the extra "."

var foo = new List<int>();  // C#
var foo = new List.<int>();  // JS
Feb 27 '12 at 01:37 AM Eric5h5

Thanks now I get it completely. I have a ton of work todo. The combined total of these comments would make a great addition to the unity docs for all the javascript coders.

Feb 27 '12 at 01:50 AM dansav
(comments are locked)
10|3000 characters needed characters left

Have a read of this document: http://unity3d.com/support/documentation/Manual/iphone-GettingStarted.html

By default iOS turns of dynamic casting, which essentially would do the same thing when you do #pragma strict. You just need to ensure that you declare all your variable data type, which you really should be doing anyway, its just good practice.

var m_string : string;
var m_int : int;
var m_rotation : Quaternion;
var m_jArray : Array;
varm_bullitinArray1 : GameObject[];
varm_bullitinArray2 : int[];

and so forth

more ▼

answered Feb 27 '12 at 01:11 AM

Default117 gravatar image

Default117
331 26 29 33

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x3445
x1999
x1953
x32

asked: Feb 27 '12 at 12:47 AM

Seen: 936 times

Last Updated: Feb 27 '12 at 01:50 AM