Ошибка is not a member of "Object"

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Ошибка is not a member of "Object"

Сообщение SiLeNT_HiLL 09 ноя 2013, 17:08

У меня есть скрипт и при компиляции выходят такие ошибки:

4 таких
Assets/Scripts/Inventory.js(214,176): BCE0019: 'Amount' is not a member of 'Object'.

7 таких
Assets/Scripts/Inventory.js(214,216): BCE0019: 'ID' is not a member of 'Object'.


Вот кусок из скрипта:
Синтаксис:
Используется javascript
class ItemInfo
{
        var ID : int;
        var Icon : Texture2D;
        var Amount : int;
}
function OnGUI()
{
        if(DisplayInventory)
        {
                GUI.skin = mySkin;
                Time.timeScale = 0;
                Screen.lockCursor = false;
                GUI.color = Color.white;
                GUILayout.Space(10);
                if(GUI.Button(Rect(10, 50, 100, 40), "END GAME"))
                {
                        Application.LoadLevel(0);
                }
                var width = buttonWidth * rowWidth;
                var height = Screen.height - 150;
                GUI.DrawTexture(Rect(Screen.width/2 - (width/2) - 50, Screen.height/2 - (height/2) - 110, width + 100, height + 220), menuTexture);
                GUI.BeginGroup(Rect(Screen.width/2 - (width/2), Screen.height/2 - (height/2) + 35, width, height - 20), "");
                if(lootItems.Count > 0)
                for(cnt = 0; cnt < lootItems.Count; cnt++)
                {
                        var Row : int = cnt/rowWidth;
                        if(GUI.Button(Rect(buttonWidth * cnt - (buttonWidth * rowWidth * Row), Row * buttonHeight, buttonWidth, buttonHeight), GUIContent("x" + lootItems[cnt].Amount.ToString(), Icons[lootItems[cnt].ID])))
                        {
                                if(lootItems[cnt].ID != 2)
                                {
                                        if(itemInHand < 1000)
                                        {
                                                AddItem(itemInHand, 1);
                                        }
                                        itemInHand = lootItems[cnt].ID;
                                        RemoveItem(lootItems[cnt].ID);
                                        DisplayInventory = false;
                                }
                                else
                                {
                                        if(flashLight.curBatteryLife > flashLight.maxBatteryLife/5)
                                        {
                                                print("Battery is not depleted");
                                        }
                                        else
                                        {
                                                flashLight.curBatteryLife = flashLight.maxBatteryLife;
                                                RemoveItem(lootItems[cnt].ID);
                                                DisplayInventory = false;
                                        }
                                }
                        }
                }
                GUI.EndGroup();
        }
        else if(!DisplayInventory && !DisplayPage)
        {
                Time.timeScale = 1;
                Screen.lockCursor = true;
               
                if(itemInHand < 1000)
                {
                        GUI.Label(Rect(20, (Screen.height - buttonWidth) - 20, buttonWidth, buttonHeight), Icons[itemInHand]);
                }
        }
        else
        {
                Time.timeScale = 0;
                GUI.DrawTexture(Rect(Screen.width/2 - 300, Screen.height/2 - 350, 600, 700), page);
        }
}


Надёюсь поможете
Последний раз редактировалось SiLeNT_HiLL 09 ноя 2013, 17:20, всего редактировалось 1 раз.
SiLeNT_HiLL
UNIт
 
Сообщения: 65
Зарегистрирован: 08 сен 2012, 11:28

Re: Помогите разобраться с ошибками

Сообщение seaman 09 ноя 2013, 17:14

Неа, не поможем. Вы скрыли часть кода.
В каких строках ошибки? Что есть lootItems?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Помогите разобраться с ошибками

Сообщение SiLeNT_HiLL 09 ноя 2013, 17:15

seaman писал(а):Неа, не поможем. Вы скрыли часть кода.
В каких строках ошибки? Что есть lootItems?

Вот
Ошибки на этих лайнах 269, 236, 215, 215, 217, 223, 224, 236, 271, 288, 290, 292.

Синтаксис:
Используется javascript
public var mySkin : GUISkin;
public var flashLight : FlashLight;
public var moveScript : Movement;
public var pickupAudio : AudioClip;
public var unlockAudio : AudioClip;
public var paperAudio : AudioClip;
public var buttonWidth = 80;
public var buttonHeight = 80;
public var rowWidth : int = 5;
public var Range : float = 10;
public var menuTexture : Texture2D;
public var Icons : Texture2D[];
public var hoverShader : Shader;
var lootItems = new ArrayList();
var cnt : float;
var i : float;
var r : float;



private var itemInHand : int = 1000;
private var hitObject : GameObject;
private var DisplayInventory : boolean;
private var DisplayPage : boolean;
public var page : Texture2D;

class ItemInfo
{
        var ID : int;
        var Icon : Texture2D;
        var Amount : int;
}

function Update()
{
        if(Input.GetKeyDown("`"))
        {
                if(!DisplayInventory)
                {
                        DisplayInventory = true;
                }
                else
                {
                        DisplayInventory = false;
                }
        }
        var Hit : RaycastHit;
        var DirectionRay = transform.TransformDirection(Vector3.forward);
        Debug.DrawRay(transform.position , DirectionRay * Range , Color.blue);
        if(Physics.Raycast(transform.position , DirectionRay , Hit, Range))
        {
                if(!DisplayInventory)
                {
                        if(Hit.transform.tag == "Note")
                        {
                                var trigger = Hit.collider.gameObject.GetComponent("zTrigger");
                                if(Input.GetKeyDown("e"))
                                {
                                        if(!DisplayPage)
                                        {
                                                page = Hit.collider.gameObject.renderer.material.mainTexture;
                                                DisplayPage = true;
//                                              if((trigger.GetComponent("triggerStatus") as zTrigger) == 0)
//                                              {
                                                        //(trigger.StartZombie.GetComponent("StartZombie") as zTrigger) ();
                                                        //trigger.triggerStatus = 1;
//                                              }
//                                              audio.volume = 0.5;
//                                              audio.PlayOneShot(paperAudio);
//                              }
//                                      else
//                                      {
//                                              DisplayPage = false;
//                                              if((trigger.GetComponent("triggerStatus") as zTrigger) == 1)
//                                              {
//                                                      (trigger.GetComponent("InitiateZombie") as zTrigger).enabled ();
                                                        //trigger.InitiateZombie();
//                                                      trigger.triggerStatus = 2;
//                                              }
                                        }
                                }
                        }
                        else if(Hit.transform.tag == "Candle")
                        {
                                hitObject = Hit.collider.gameObject;
                                if(hitObject.renderer)
                                {
                                        hitObject.renderer.material.shader = hoverShader;
                                        hitObject.renderer.material.SetColor("_OutlineColor", Color.red);
                                }
                                for(var child : Transform in hitObject.transform)
                                {
                                        child.renderer.material.shader = hoverShader;
                                        child.renderer.material.SetColor("_OutlineColor", Color.red);
                                }
                                if(Input.GetKeyDown("e") && (Hit.transform.GetComponent("Candle")as Candle).flameEnabled == false)
                                {
                                        if((Hit.transform.GetComponent("Item")as Item).serialID == itemInHand)
                                        {
                                                (Hit.transform.GetComponent("Candle")as Candle).EnableFlame();
                                        }
                                        else
                                        {
                                                Messenger.DisplayMessage("Lighter not Equipped");
                                        }
                                }
                        }
                        else if(Hit.transform.tag == "Door")
                        {
                                if(Hit.rigidbody.isKinematic)
                                {
                                        if(Input.GetKeyDown("e"))
                                        {
                                                if((Hit.transform.GetComponent("Item")as Item).serialID == itemInHand)
                                                {
                                                        audio.volume = 0.2;
                                                        audio.PlayOneShot(unlockAudio);
                                                        Hit.rigidbody.isKinematic = false;
                                                        itemInHand = 1000;
                                                }
                                                else
                                                {
                                                        Messenger.DisplayMessage("Key is not equipped");
                                                }
                                        }
                                        if(Input.GetAxis("Mouse ScrollWheel"))
                                        {
                                                Messenger.DisplayMessage("Locked");
                                        }
                                }
                                Hit.rigidbody.AddForceAtPosition(DirectionRay * Input.GetAxis("Mouse ScrollWheel") * 1, Hit.point);
                        }
                        else if(Hit.transform.tag == "Lid")
                        {
                                Hit.rigidbody.AddForceAtPosition(DirectionRay * Input.GetAxis("Mouse ScrollWheel") * 50, Hit.point);
                        }
                        else if(Hit.transform.tag == "Pickup")
                        {
                                hitObject = Hit.collider.gameObject;
                                if(hitObject.renderer)
                                {
                                        hitObject.renderer.material.shader = hoverShader;
                                        hitObject.renderer.material.SetColor("_OutlineColor", Color.red);
                                }
                                for(var child : Transform in hitObject.transform)
                                {
                                        child.renderer.material.shader = hoverShader;
                                        child.renderer.material.SetColor("_OutlineColor", Color.red);
                                }
                                Messenger.DisplayMessage("Press E to pick up");
                                if(Input.GetKeyDown("e"))
                                {
                                        Messenger.time = 0;
                                        var refScript : Item = Hit.collider.gameObject.GetComponent("Item");
                                        AddItem(refScript.serialID, 1);
                                        hitObject = null;
                                        Destroy(Hit.collider.gameObject);
                                }
                        }
                        else
                        {
                                if(hitObject)
                                {
                                        if(hitObject.renderer)
                                        {
                                                hitObject.renderer.material.shader = Shader.Find ("Diffuse");
                                        }
                                        for(var obj : Transform in hitObject.transform)
                                        {
                                                obj.renderer.material.shader = Shader.Find ("Diffuse");
                                        }
                                        hitObject = null;
                                }
                        }
                }
        }
        else
        {
                if(hitObject)
                {
                        if(hitObject.renderer)
                        {
                                hitObject.renderer.material.shader = Shader.Find("Diffuse");
                        }
                        for(var obj2 : Transform in hitObject.transform)
                        {
                                obj2.renderer.material.shader = Shader.Find ("Diffuse");
                        }
                        hitObject = null;
                }
        }
}

function OnGUI()
{
        if(DisplayInventory)
        {
                GUI.skin = mySkin;
                Time.timeScale = 0;
                Screen.lockCursor = false;
                GUI.color = Color.white;
                GUILayout.Space(10);
                if(GUI.Button(Rect(10, 50, 100, 40), "END GAME"))
                {
                        Application.LoadLevel(0);
                }
                var width = buttonWidth * rowWidth;
                var height = Screen.height - 150;
                GUI.DrawTexture(Rect(Screen.width/2 - (width/2) - 50, Screen.height/2 - (height/2) - 110, width + 100, height + 220), menuTexture);
                GUI.BeginGroup(Rect(Screen.width/2 - (width/2), Screen.height/2 - (height/2) + 35, width, height - 20), "");
                if(lootItems.Count > 0)
                for(cnt = 0; cnt < lootItems.Count; cnt++)
                {
                        var Row : int = cnt/rowWidth;
                        if(GUI.Button(Rect(buttonWidth * cnt - (buttonWidth * rowWidth * Row), Row * buttonHeight, buttonWidth, buttonHeight), GUIContent("x" + lootItems[cnt].Amount.ToString.GetComponent(), Icons[lootItems[cnt].ID])))
                        {
                                if(lootItems[cnt].ID != 2)
                                {
                                        if(itemInHand < 1000)
                                        {
                                                AddItem(itemInHand, 1);
                                        }
                                        itemInHand = lootItems[cnt].ID;
                                        RemoveItem(lootItems[cnt].ID);
                                        DisplayInventory = false;
                                }
                                else
                                {
                                        if(flashLight.curBatteryLife > flashLight.maxBatteryLife/5)
                                        {
                                                print("Battery is not depleted");
                                        }
                                        else
                                        {
                                                flashLight.curBatteryLife = flashLight.maxBatteryLife;
                                                RemoveItem(lootItems[cnt].ID);
                                                DisplayInventory = false;
                                        }
                                }
                        }
                }
                GUI.EndGroup();
        }
        else if(!DisplayInventory && !DisplayPage)
        {
                Time.timeScale = 1;
                Screen.lockCursor = true;
               
                if(itemInHand < 1000)
                {
                        GUI.Label(Rect(20, (Screen.height - buttonWidth) - 20, buttonWidth, buttonHeight), Icons[itemInHand]);
                }
        }
        else
        {
                Time.timeScale = 0;
                GUI.DrawTexture(Rect(Screen.width/2 - 300, Screen.height/2 - 350, 600, 700), page);
        }
}

function AddItem(itemID : int, amount : int)
{
        var HasItem : boolean;
        var NewInfo = new ItemInfo();
        NewInfo.ID = itemID;
        NewInfo.Icon = Icons[itemID];
        for(i = 0; i < lootItems.Count; i++)
        {
                if(NewInfo.ID == lootItems[i].ID)
                {
                        lootItems[i].Amount += amount;
                        HasItem = true;
                }
        }
        if(!HasItem)
        {
                NewInfo.Amount += amount;
                lootItems.Add(NewInfo);
        }
        audio.volume = 0.7;
        audio.PlayOneShot(pickupAudio);
}

function RemoveItem(useItem : int)
{
        for(r = 0; r < lootItems.Count; r++)
        {
                if(lootItems[r].ID == useItem)
                {
                        if(lootItems[r].Amount > 1)
                        {
                                lootItems[r].Amount -= 1;
                        }
                        else
                        {
                                lootItems.RemoveAt(r);
                        }
                }
        }
}
SiLeNT_HiLL
UNIт
 
Сообщения: 65
Зарегистрирован: 08 сен 2012, 11:28

Re: Ошибка is not a member of "Object"

Сообщение SevenDrip 09 ноя 2013, 17:55

Надо использование ArrayList законодательно запретить.

Попробуйте так:

Синтаксис:
Используется javascript
import System.Collections.Generic;

...
var lootItems = new List.<ItemInfo>();
...
SevenDrip
UNIт
 
Сообщения: 108
Зарегистрирован: 10 авг 2012, 18:56

Re: Ошибка is not a member of "Object"

Сообщение seaman 09 ноя 2013, 17:55

ArrayList - нетипизированный массив. Его элементы - Object, которые, естественно не содержат Ваших переменных. Следовательно - или используйте типизированный массив с Вашими ItemInfo, либо каждый раз приводите типы к нужному.
Надо использование ArrayList законодательно запретить.

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

Re: Ошибка is not a member of "Object"

Сообщение SevenDrip 09 ноя 2013, 18:05

seaman писал(а):
Надо использование ArrayList законодательно запретить.

Это неверное решение. Надо законодательно запретить программировать тем, кто не понимает что такое тип и что такое приведение типов.

Для тех, кто ещё не понимает типы, ArrayList чаще создаёт проблемы, чем решает.
А тем, кто уже понимает типы, ArrayList просто не нужен.

Случайно заметил в исходнике такой фрагмент:
Синтаксис:
Используется javascript
"x" + lootItems[cnt].Amount.ToString.GetComponent()

Не знаю, что это, но оно не скомпилируется.
SevenDrip
UNIт
 
Сообщения: 108
Зарегистрирован: 10 авг 2012, 18:56

Re: Ошибка is not a member of "Object"

Сообщение SiLeNT_HiLL 09 ноя 2013, 20:15

Спасибо всем, особенно SevenDrip за пример и seaman за объяснение
SiLeNT_HiLL
UNIт
 
Сообщения: 65
Зарегистрирован: 08 сен 2012, 11:28


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 27