Не получается заполнить массив (инвентарь)[РЕШЕНО]

Программирование на Юнити.

Не получается заполнить массив (инвентарь)[РЕШЕНО]

Сообщение haunt1024 13 апр 2012, 15:50

Вобщем пишу простенькую систему подбора предметов, изучал темы на форуме и на их основе написал код, в результате таки заставил пополнятся массив, но пополняется он пустыми элементами. (Debug.Log выдает Null) Компилятор ошибок не выдает, просто код не делает то что должен.
Нужно чтобы код на капсуле игрока считывал переменные из скрипта предмета и заполнял массив экземплярами класса с свойствами предмета.
Вот мой код:
Тот что на игроке
Синтаксис:
Используется javascript
static var statinventory : Inventory;
var fastAccesSlots : Array;

class inventoryitem {
var prefabToInstantiate : GameObject;
var objectname : String;
var mass : float;
var size : float;
var stackable : boolean;
}

function Awake () {
        statinventory = this;
        fastAccesSlots = new Array ();
         
}

function AddItem (item : inventoryitem) {
        //Debug.Log(fastAccesSlots.Count);
        //fastAccesSlots.Push (inventoryitem);
        //var item : inventoryitem;
       
        fastAccesSlots.Add(item);
}
function DropItem (){
var spawn;
spawn = fastAccesSlots.Pop();
Instantiate(spawn,transform.position,transform.rotation);

}
function Update () {
        Debug.Log(fastAccesSlots[0].objectname);
        //Debug.Log(fastAccesSlots[2]);

}


Тот что на предмете :
Синтаксис:
Используется javascript
#pragma strict
var prefabToInstantiate : GameObject;
var objectname : String;
var mass : float;
var size : float;
var stackable : boolean;

var selected : boolean = false;

function Awake () {
rigidbody.mass = mass;
}

function OnMouseEnter () {
        selected = true;
    renderer.material.color = Color.red;
}

function OnMouseExit () {
        selected = false;
    renderer.material.color = Color.white;
}

function Update () {
   if (Input.GetKeyDown("e") && selected)
        {
        var item = new inventoryitem();
        item.prefabToInstantiate = prefabToInstantiate;
        item.objectname = objectname;
        item.mass = mass;
        item.size = size;
        item.stackable = stackable;
                //Debug.Log (item.mass);
        Inventory.statinventory.AddItem(item);
        Destroy(gameObject);
        }
}

 

Что тут не так ?

Исправил код до рабочего состояния, может кому пригодится.
[curved_hands]
Последний раз редактировалось haunt1024 15 апр 2012, 11:16, всего редактировалось 6 раз(а).
haunt1024
UNец
 
Сообщения: 21
Зарегистрирован: 05 апр 2012, 19:36

Re: Не получается заполнить массив (добавляется null)

Сообщение AndreyMust19 13 апр 2012, 16:43

Debug.Log(fastAccesSlots[0].objectanme);

Опечатка
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Не получается заполнить массив (добавляется null)

Сообщение haunt1024 13 апр 2012, 17:22

Хм, и как по вашему правельно ? :-?
haunt1024
UNец
 
Сообщения: 21
Зарегистрирован: 05 апр 2012, 19:36

Re: Не получается заполнить массив (добавляется null)

Сообщение seaman 13 апр 2012, 19:31

objectanme != objectname
seaman
Адепт
 
Сообщения: 8346
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Не получается заполнить массив (добавляется null)

Сообщение haunt1024 13 апр 2012, 22:35

:D #-o Хах, ну я и слепой , спасибо проверю...
Исправил, но результат тот-же, странно что компилятор это проглотил.
haunt1024
UNец
 
Сообщения: 21
Зарегистрирован: 05 апр 2012, 19:36

Re: Не получается заполнить массив (добавляется null)

Сообщение seaman 13 апр 2012, 22:47

Прокрутите в голове что вот тут делается. Просто поработайте компьютером:
Синтаксис:
Используется javascript
function AddItem (item : inventoryitem) {
        //Debug.Log(fastAccesSlots.Count);
        //fastAccesSlots.Push (inventoryitem);
        //var item : inventoryitem;
       
        item = new inventoryitem();
        fastAccesSlots.Add(inventoryitem());
}

Задайте себе вопрос:
Зачем Вы передаете в функцию item, если тут же присваиваете ей новое пустое значение?
seaman
Адепт
 
Сообщения: 8346
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Не получается заполнить массив (добавляется null)

Сообщение haunt1024 14 апр 2012, 10:55

Спасибо, вот так, из-за невнимательности и происходят завалы. А логику я просто не совсем видимо понял, думал что это инициализация переменной. :D
Теперь буду внимательнее.
haunt1024
UNец
 
Сообщения: 21
Зарегистрирован: 05 апр 2012, 19:36

Re: Не получается заполнить массив (добавляется null)

Сообщение seaman 14 апр 2012, 11:13

думал что это инициализация переменной

Ну а зачем Вам ее инициализировать то?
seaman
Адепт
 
Сообщения: 8346
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Не получается заполнить массив (добавляется null)

Сообщение haunt1024 14 апр 2012, 11:23

Даже сказать что не знаю, обсуждали с другом и внезапно решили что нужно инициализировать, а в Scripting Reference примеры совсем простые, и друг кстати на C# пишет.
haunt1024
UNец
 
Сообщения: 21
Зарегистрирован: 05 апр 2012, 19:36


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6