InventoryLight – Omówienie działania oraz pierwsze klasy.

W ostatnim wpisie wymieniłem po krótce wszystkie rzeczy jakie chciałbym aby znalazły się w moim projekcie. Mam nadzieję, że jeśli ktokolwiek kto czyta tą serię artykułów ( czyli raczej znikoma ilość ) i chciałby napisać własny ekwipunek, a nie bardzo wie jak to może działać, bo dopiero zaczyna swoją przygodę z Unity, to ta seria jest specjalnie dla niego.

Będę stopniowo rozbudowywał projekt aż do upragnionego efektu końcowego, o ile dam radę 😀 .

Przejdę od razu do działania. Pojawił się już pierwszy Commit na moim repozytorium.

Pominę tu cały proces tworzenia własnego projektu i dodawania folderów, ponieważ liczę na to, że czytelnik potrafi to zrobić.

Jedną z najważniejszych klas jest Klasa Item. Przechowuje ona właściwości dokładnie jednego przedmiotu który będzie mógł wystąpić w naszym inwentarzu. Później przedmioty będą składowane w specjalnej klasie sprawującej rolę „Bazy danych”, ale do niej przejdę w następnym wpisie.

Item.cs


using UnityEngine;
using System.Collections;
using System.Collections.Generic;

namespace Assets.Scripts.Items
{
public class Item
{
public int ID;
public string Name;
public string Description;

public List<ItemProperty> ItemProperties;
public ItemCategory itemCategory;

public Item()
{

}
}
}

Jestem pewien, że w przyszłości klasa ulegnie paru zmianom, ale w chwili gdy piszę ten wpis to właśnie tak ona wygląda. Teraz po kolei omówię wszystkie pola tej klasy.

  • int ID – jest to liczbowy identyfikator przedmiotu. Każdy Item ma swoje unikalne ID
  • string Name – nie trzeba chyba wyjaśniać, jest to nazwa przedmiotu wyrażona łańcuchem znaków, również unikalna dla każdego przedmiotu.
  • string Description – Opis przedmiotu, który będzie widoczny dla użytkownika po aktywowaniu Tooltipa lub podglądu przedmiotu.
  • List<ItemProperty> ItemProperties – Lista właściwości przedmiotów.
  • ItemCategory itemCategory – Kategoria przedmiotu.

Co do klasy ItemProperty i ItemCategory dodam tylko tyle, że w wielu poradnikach w serwisie youtube.com wiele osób tutaj dodaje do przedmiotu własne już właściwości do klasy, na przykład każdy Item niezależnie od jego kategorii ma w sobie właściwości „AttackPower”, „RequiredStrength” ,”Durability” i tak dalej. Jest to moim zdaniem niepraktyczne podejście, dzięki takiemu zapisowi sami będziemy w stanie zdecydować o tym czy przedmiot ma mieć jakieś właściwości i jeśli tak to czy mają mieć jakąś wartość czy też nie, bo po co mi w grze mikstura, która przywraca punkty życiowe, ale ma też w sobie wartość Ataku, która potem jest wyświetlana przez Tooltip. Moim celem jest zaprojektowanie tego Systemu w taki sposób, by nie była wymagana ingerencja w kod aż do momentu w którym chcemy go rozszerzać o własne funkcjonalności.

Poniżej zamieszczam kod klas ItemProperty oraz ItemCategory

ItemProperty.cs


using System;
using System.Collections.Generic;

namespace Assets.Scripts.Items
{
public class ItemProperty
{
public string PropertyName;
public string PropertyValue;

public ItemProperty()
{

}

public ItemProperty(string name, string value)
{
this.PropertyName = name;
this.PropertyValue = value;
}
}
}

ItemCategory.cs


using System;

namespace Assets.Scripts.Items
{
public class ItemCategory
{
public string Category;
}
}

Każda z tych klas jest obecnie w najprostszej postaci i na pewno zostaną wprowadzone do niej szersze modyfikacje w następnych częściach.

To by było już wszystko na ten artykuł, w następnej części omówię 2 sposoby składowania prototypów naszych Item’ów, które mimo identycznej zasady działania są napisane w inny sposób.

 

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s