Синтаксис:
Используется csharp
public class Rock : MonoBehaviour {
public int ID = 0;
public float pastTime = 0;
public string status = "";
public int vRocks = 0;
void countBlackSearch()
{
int vRockUp = 0;
int vRockDown = 0;
int direction = GameObject.Find("RULES_KEEPER").GetComponent<Rules>().levelSize;
for (int i = 1; i<5; i++)
{
if (ID != 0)
{
GameObject Rock;
if (i == 1){Rock = GameObject.Find(""+ID);}
else {Rock = GameObject.Find(""+(ID+direction));}
if (status == "b")
{
print("name "+Rock.name);
print("status "+Rock.GetComponent<Rock>().status);
if (Rock.GetComponent<Rock>().status == status && Rock.GetComponent<Rock>().ID == ID+direction)
{
++vRockUp;
int k = 0;
if (i == 1){k = 2;} else k = i;
direction = k * GameObject.Find("RULES_KEEPER").GetComponent<Rules>().levelSize;
}
else i=6;
}
}
print("vRock "+vRockUp);
if (i >= 4) {print("STACK");}
}
}
}
public int ID = 0;
public float pastTime = 0;
public string status = "";
public int vRocks = 0;
void countBlackSearch()
{
int vRockUp = 0;
int vRockDown = 0;
int direction = GameObject.Find("RULES_KEEPER").GetComponent<Rules>().levelSize;
for (int i = 1; i<5; i++)
{
if (ID != 0)
{
GameObject Rock;
if (i == 1){Rock = GameObject.Find(""+ID);}
else {Rock = GameObject.Find(""+(ID+direction));}
if (status == "b")
{
print("name "+Rock.name);
print("status "+Rock.GetComponent<Rock>().status);
if (Rock.GetComponent<Rock>().status == status && Rock.GetComponent<Rock>().ID == ID+direction)
{
++vRockUp;
int k = 0;
if (i == 1){k = 2;} else k = i;
direction = k * GameObject.Find("RULES_KEEPER").GetComponent<Rules>().levelSize;
}
else i=6;
}
}
print("vRock "+vRockUp);
if (i >= 4) {print("STACK");}
}
}
}
Оно же, но без некоторого дебажного мусора:
Синтаксис:
Используется javascript
public var col : String = "";
public var ID : int;
public var foundedRocks : int;
function blackRockSearch(){
var RK : GameObject = GameObject.Find("RULES_KEEPER");
var direct : int = RK.GetComponent(Rules).levelSize;
if (col == "b" && RK.GetComponent(Rules).lastBlackRockWasPlaced == true)
{
for (var i=1; i<5; i++)
{
var Rock;
if (i == 1){Rock == GameObject.Find(""+ID);}
else {Rock = GameObject.Find(""+(ID+direct));}
if (Rock.GetComponent(Rock).col == col && Rock.GetComponent(Rock).ID == ID+direct)
{
++foundedRocks;
var k : int = 0;
if (i ==1){k = 2;} else k = i;
direct = k * RK.GetComponent(Rules).levelSize;
}
else i=6;
}
lastBlackRockWasPlaced = false;
}
}
public var ID : int;
public var foundedRocks : int;
function blackRockSearch(){
var RK : GameObject = GameObject.Find("RULES_KEEPER");
var direct : int = RK.GetComponent(Rules).levelSize;
if (col == "b" && RK.GetComponent(Rules).lastBlackRockWasPlaced == true)
{
for (var i=1; i<5; i++)
{
var Rock;
if (i == 1){Rock == GameObject.Find(""+ID);}
else {Rock = GameObject.Find(""+(ID+direct));}
if (Rock.GetComponent(Rock).col == col && Rock.GetComponent(Rock).ID == ID+direct)
{
++foundedRocks;
var k : int = 0;
if (i ==1){k = 2;} else k = i;
direct = k * RK.GetComponent(Rules).levelSize;
}
else i=6;
}
lastBlackRockWasPlaced = false;
}
}
В процессе выполнения программы вылетает Exception:
NullReferenceException: Object reference not set to an instance of an object
Boo.Lang.Runtime.RuntimeServices.Dispatch (System.Object target, System.String cacheKeyName, System.Type[] cacheKeyTypes, System.Object[] args, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.Dispatch (System.Object target, System.String cacheKeyName, System.Object[] args, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.Invoke (System.Object target, System.String name, System.Object[] args)
Rock.blackRockSearch () (at Assets/Scripts/Rock.js:17)
Rock.Update () (at Assets/Scripts/Rock.js:31)
Ругается на строку:
Синтаксис:
Используется javascript
if (Rock.GetComponent(Rock).col == col && Rock.GetComponent(Rock).ID == ID+direct)
Я предполагаю, что я делаю что-то неправомерное с GameObject, объявляю криво или использую после объявления. Пробовал уже разные варианты, пока не помогло. Больше всего смущает именно тот факт, что в C# все ок.
Смиренно прошу мудрого совета старших. Пните меня в нужном направлении, а то заплутал малямсь.