Som en del af mit crafting system skal jeg have:
- Recipe database til mine opskrifter.
- Item database til mine Items.
- UI element for mit player inventory.
- UI element for mit Crafting Panel.
- UI element hvor resultatet af en crafting event ender.
- UI element så jeg kan få nogle tooltips/info om mine items.
- Drag and drop funktionalitet på min mus så jeg kan flytte rundt på mine items.
Jeg opretter først Item classe for at sætte mine Item field op så jeg kan få dat i dem fra min ItemDatabase, min CraftRecipe skal kun have 2 felter et int array af itemId's som er required og itemToCraft som tager det itemID som man laver. I RecipeDatabase kan jeg så bestemme hvilke hvilke specifikke itemID's man skal bruge samt (hvis jeg ønsker om mine Items skal placeres på en bestemt måde i mit crafting panel.
for at få Drag and Drop på min mus laver jeg et script "ItemFollowMouse.cs" dette er ret simpelt og gør egentligt bare at den registrere hvilken position musen har og hvad (hvis der er noget) der er på den position, dernæst udskiftes det objekt jeg klikker på med et usynligt objekt som musen i scenen initialises med, dvs at i mit UI ud skifte objekter hele tiden med hinanden og kan man ikke se noget objekt betyder det at objektet er usynligt (alpha er 0)
Tool tippet leder først efter om der er noget under musen og hvis der er noget child componentet på Itemet som i det her tilfælde vil være strings og viser dem fra i følge format teksten:
string tooltip = string.Format("<b>{0}</b>\n{1}\n<b>{2}</b>\n\n<b>Value: {3}</b>", item.title, item.description, statText, item.itemValue);
hvor Item værdierne hentes fra Item (fieldsne sættes op i Item.cs men ItemDatabase sætte Item værdierne)
Craftes et Item ud fra en recipe genereres et nyt Items objekt med det ItemID som recipen kæver, men de playeren har lagt i cafting panelet bliver Destoyed hvis man klikker/tager craftingResult Itemet ud af craft result panelet.
Link to Github and projekt filer
