Страница 1 из 1

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

СообщениеДобавлено: 13 апр 2012, 15:50
haunt1024
Вобщем пишу простенькую систему подбора предметов, изучал темы на форуме и на их основе написал код, в результате таки заставил пополнятся массив, но пополняется он пустыми элементами. (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]

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

СообщениеДобавлено: 13 апр 2012, 16:43
AndreyMust19
Debug.Log(fastAccesSlots[0].objectanme);

Опечатка

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

СообщениеДобавлено: 13 апр 2012, 17:22
haunt1024
Хм, и как по вашему правельно ? :-?

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

СообщениеДобавлено: 13 апр 2012, 19:31
seaman
objectanme != objectname

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

СообщениеДобавлено: 13 апр 2012, 22:35
haunt1024
:D #-o Хах, ну я и слепой , спасибо проверю...
Исправил, но результат тот-же, странно что компилятор это проглотил.

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

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

Задайте себе вопрос:
Зачем Вы передаете в функцию item, если тут же присваиваете ей новое пустое значение?

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

СообщениеДобавлено: 14 апр 2012, 10:55
haunt1024
Спасибо, вот так, из-за невнимательности и происходят завалы. А логику я просто не совсем видимо понял, думал что это инициализация переменной. :D
Теперь буду внимательнее.

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

СообщениеДобавлено: 14 апр 2012, 11:13
seaman
думал что это инициализация переменной

Ну а зачем Вам ее инициализировать то?

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

СообщениеДобавлено: 14 апр 2012, 11:23
haunt1024
Даже сказать что не знаю, обсуждали с другом и внезапно решили что нужно инициализировать, а в Scripting Reference примеры совсем простые, и друг кстати на C# пишет.