Unityのエラーとその原因・対策をまとめています。
expecting "RPAREN", found "???". (BCE0044)
Instantiate(prefab, Vector3((i*3,j*3,k*4), Quaternion.identity)
のように、カッコが対応していない。エラーが出る行は大抵カッコが対応していない箇所の直後であるから、エラーの直前のカッコの対応関係をみればよい。
このように単純な場合もあるが、MonoDevelopの頭の悪さに悩まされることもある。
例えば、以下のコードはコンパイルエラーとなる。
Rect(pos.x-texsize.x/2,pos.y-texsize.y/2,texsize.x,texsize.y)
これは以下のようにすることでコンパイルできる。
Rect(pos.x-texsize.x/2, pos.y-texsize.y/2, texsize.x, texsize.y)
何が変わったのか分からないと思うが、引数のコンマの直後にスペースを入れただけである。このことから、MonoDevelopでは引数の直後にはスペースを入れる必要があるように思われる。(2012.9.13)
IndexOutOfRangeException: Array index is out of range.
n as (int) = array(int,10)
Debug.Log(n[10])
配列(Array)で、宣言した個数よりも大きな番地を指定している。
It is not possible to invoke an expression of type "int". (BCE0077)
Application.LoadLevel("Scene Name")
と書くところを、
Application.loadedLevel("Scene Name")
と書いている。入力アシストのおかげでよくやるタイプミス。
lastVertex < GetVertexCount () / UnityEngine.Mesh:set_triangles(Int32[])
mesh.Clear()
mesh.vertices = (Vector3(0,0,1),Vector3(0,0,2),Vector3(0,1,0))
mesh.triangles = (0,1,3)
meshにて、三角形配列(triangles)を設定する際に、三角形配列で指定された最大の頂点indexの方が、事前に設定された頂点(Vertex)の数よりも小さい。
OverflowException
value as (Vector3) = array[of Vector3](-1)
のように、arrayの数が正の整数でない。
VerificationException: Error verifying ***:*** (): Unexpected object for ldvirtftn at 0x***
test as int = 1
Debug.Log(test.ToString)
int型をToStringしている、など、よくわからないことをしている。MonoDevelopではエラーにならないが、Unityで実行するとエラーになる場合にこのエラーが表示される気がする。
Debug.Log(""+test)
とすれば問題ない。