Воскресенье, 24 Ноября 2024, 13:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Трудности перевода скрипта from JS to C# - Unity, Unity3D
unitreidДата: Воскресенье, 11 Января 2015, 16:36 | Сообщение # 1
уже был
Сейчас нет на сайте
Люди добрые! Есть скрипт на JS,мне он нужен в C# ну очень очень)
помогите преобразовать его в C#.

Вот сам Скрипт:
Код
var cells = new Array();
var doorsToCells = new Array();
var imediateCells = new Array();
var testForCells : boolean = true;
var waitToTestCells : float = 2;
var stage : int = 1;

var animatedDoor : GameObject;
@HideInInspector
var doorOpen : boolean = true;

function Awake ()  
{
  doorOpen = true;
  cells = GameObject.FindGameObjectsWithTag("AIpathCell");
  doorsToCells.length = cells.length;
  testForCells = true;
  waitToTestCells = 2;
  stage = 1;
}

function Update ()  
{
  if (animatedDoor)
   doorOpen = animatedDoor.GetComponent(DoorScript).open;

  if (testForCells && waitToTestCells <= 0)
  {
   for (var imediateCell : GameObject in imediateCells)
   {
    for (var i : int = 0; i <= cells.length - 1; i++)
    {
     if (cells[i] == imediateCell)
      doorsToCells[i] = 1;
    }
   }
    
   for (stage = 2; stage <= cells.length; stage++)
   {
    for (i = 0; i <= cells.length - 1; i++)
    {
     if (doorsToCells[i] == stage - 1)
      for (var checkDoor : GameObject in cells[i].GetComponent(AIpathCellScript).doors)
      {
       if (checkDoor != gameObject)
       {
        for (var checkCell : GameObject in checkDoor.GetComponent(AIpathDoorScript).imediateCells)
        {
         for (var j : int = 0; j <= cells.length - 1; j++)
         {
          if (cells[j] == checkCell && doorsToCells[j] == null)
                              doorsToCells[j] = stage;
         }
        }
       }
      }
    }
   }
    
   testForCells = false;
   Debug.Log(doorsToCells);
  }
  waitToTestCells -= 1;
}

function OnTriggerEnter (other : Collider)
{
  if (other.tag == "AIpathCell")
   imediateCells.Add(other.gameObject);
}


Проблема в том, что здесь используется Array(), как List в шарпе. Я вообще в данной теме профан. Помогите, пожалуйста)
romeo98Дата: Воскресенье, 11 Января 2015, 16:54 | Сообщение # 2
участник
Сейчас нет на сайте
Код
public ArrayList cells = new ArrayList();          
public ArrayList doorsToCells = new ArrayList();          
public ArrayList imediateCells = new ArrayList();          
public bool testForCells = true;          
public float waitToTestCells = 2f;          
public int stage = 1;          

public GameObject animatedDoor;          
[HideInInspector]          
public bool doorOpen = true;          

void Awake ()           
{          
           doorOpen = true;          
           cells = GameObject.FindGameObjectsWithTag("AIpathCell");          
           doorsToCells.length = cells.length;          
           testForCells = true;          
           waitToTestCells = 2;          
           stage = 1;          
}          

void Update ()           
{          
           if (animatedDoor)          
            doorOpen = animatedDoor.GetComponent<DoorScript>().open;          

           if (testForCells && waitToTestCells <= 0)          
           {          
            for (GameObject imediateCell in imediateCells)          
            {          
             for (int i = 0; i <= cells.length - 1; i++)          
             {          
              if (cells[i] == imediateCell)          
               doorsToCells[i] = 1;          
             }          
            }          
                      
            for (stage = 2; stage <= cells.length; stage++)          
            {          
             for (int i = 0; i <= cells.length - 1; i++)          
             {          
              if (doorsToCells[i] == stage - 1)          
               for (GameObject checkDoor in cells[i].GetComponent<AIpathCellScript>().doors)          
               {          
                if (checkDoor != gameObject)          
                {          
                 for (GameObject checkCell in checkDoor.GetComponent<IpathDoorScript>().imediateCells)          
                 {          
                  for (int j = 0; j <= cells.length - 1; j++)          
                  {          
                   if (cells[j] == checkCell && doorsToCells[j] == null)          
                            doorsToCells[j] = stage;          
                  }          
                 }          
                }          
               }          
             }          
            }          
                      
            testForCells = false;          
            Debug.Log(doorsToCells.ToString());          
           }          
           waitToTestCells -= 1;          
}          

void OnTriggerEnter (Collider other)          
{          
           if (other.tag == "AIpathCell")          
            imediateCells.Add(other.gameObject);          
}


Код не проверял. Возможно будет ошибка. Если будет, то скинь сюда. Мне очень нравится статья на хабре (ЭТА). Если мне нужно сделать какой-то массив или множество, я всегда захожу туда и выбираю тот вариант, который максимально мне подходит.


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Воскресенье, 11 Января 2015, 17:01
EchoITДата: Воскресенье, 11 Января 2015, 17:18 | Сообщение # 3
старожил
Сейчас нет на сайте
unitreid, ну так подключи List. В юзинги:
Код
using System.Collections.Generic;


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Воскресенье, 11 Января 2015, 17:19
logofДата: Воскресенье, 11 Января 2015, 17:35 | Сообщение # 4
частый гость
Сейчас нет на сайте
http://unity3d.ru/distribution/viewtopic.php?f=84&t=2052 - ищи помощь тут
и тут
http://unity3d.ru/distribution/viewtopic.php?f=105&t=12736 (последний топик)


Сообщение отредактировал logof - Воскресенье, 11 Января 2015, 17:38
unitreidДата: Воскресенье, 11 Января 2015, 18:06 | Сообщение # 5
уже был
Сейчас нет на сайте
всем спасибо) всё заработало
berilДата: Воскресенье, 11 Января 2015, 23:52 | Сообщение # 6
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Вот если что онлайн переводчик js -> C#



Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг