[TUTORIAL] Inventario com ScritableObject parte 2
Página 1 de 1
[TUTORIAL] Inventario com ScritableObject parte 2
Codigo do Inventario
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "Inventory",menuName = "Inventory/Inventory")]
public class Inventory : ScriptableObject
{
public List<Slot> slotList;
}
[System.Serializable]
public class Slot
{
public Item item;
public int amount;
}
script para ficar em um objeto para usar os itens
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InventoryManager : MonoBehaviour
{
public Inventory inventory;
public int indice;
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.I)){
if(inventory.slotList.Count == 0)
return;
inventory.slotList[indice].item.ApplyUse();
inventory.slotList[indice].amount -= 1;
if(inventory.slotList[indice].amount <= 0){
inventory.slotList.RemoveAt(indice);
}
}
}
}
script do item raiz
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "item",menuName = "Inventory/Item")]
public class Item : ScriptableObject
{
public string itemName;
[TextArea(10,20)]
public string description;
public Sprite icone;
public virtual void Use(){
}
public void ApplyUse(){
Use();
}
}
script dos subItens consumiveis
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "itensConsumiveis",menuName = "Inventory/consumivel")]
public class itensConsumiveis : Item
{
public enum consType { RestoreHp ,arremessar }
public consType tipoC;
public float amount;
public GameObject obj;
public string animName;
public override void Use(){
base.Use();
switch (tipoC)
{
case consType.RestoreHp:
restoreHp();
break;
case consType.arremessar:
tacar();
break;
}
}
void restoreHp(){
Debug.Log("recuperou o hp a quantidade" + amount);
}
void tacar(){
Debug.Log("tacou o objeto tal" + obj.name);
}
}
hendrick22- MembroAvançado
- PONTOS : 2690
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Inventario com ScritableObject parte 2
ola pessoal continuação do tutorial
script usado no video
script usado no video
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InventoryManager : MonoBehaviour
{
public Inventory inventory;
public int indice;
//inventario
public Transform inventoryUi;
//prefab slot
public GameObject slot;
void Start()
{
AddItemInInv();
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.I)){
if(inventory.slotList.Count == 0)
return;
inventory.slotList[indice].item.ApplyUse();
inventory.slotList[indice].amount -= 1;
if(inventory.slotList[indice].amount <= 0){
inventory.slotList.RemoveAt(indice);
}
}
}
void AddItemInInv(){
for (int i = 0; i < inventory.slotList.Count; i++)
{
GameObject newSlot = Instantiate(slot,Vector3.zero,Quaternion.identity,inventoryUi);
SetInfoSlot(i);
}
}
void SetInfoSlot(int i){
slot.transform.Find("ItemImg").GetComponent<Image>().sprite = inventory.slotList[i].item.icone;
slot.transform.Find("TextName").GetComponent<Text>().text = inventory.slotList[i].item.itemName;
slot.transform.Find("TextAmount").GetComponent<Text>().text = inventory.slotList[i].amount.ToString();
}
}
hendrick22- MembroAvançado
- PONTOS : 2690
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Inventario com ScritableObject parte 2
mais uma atualização do tutorial tá ai
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InventoryManager : MonoBehaviour
{
public Inventory inventory;
public int indice;
public bool canChangeSel = true;
public Transform select;
//inventario
public Transform inventoryUi;
//prefab slot
public GameObject slot;
void Start()
{
AddItemInInv();
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.I)){
if(inventory.slotList.Count == 0)
return;
inventory.slotList[indice].item.ApplyUse();
inventory.slotList[indice].amount -= 1;
if(inventory.slotList[indice].amount <= 0){
inventory.slotList.RemoveAt(indice);
}
}
SelectUpdate();
}
void AddItemInInv(){
for (int i = 0; i < inventory.slotList.Count; i++)
{
GameObject newSlot = Instantiate(slot,Vector3.zero,Quaternion.identity,inventoryUi);
SetInfoSlot(i);
}
}
void SetInfoSlot(int i){
slot.transform.Find("ItemImg").GetComponent<Image>().sprite = inventory.slotList[i].item.icone;
slot.transform.Find("TextName").GetComponent<Text>().text = inventory.slotList[i].item.itemName;
slot.transform.Find("TextAmount").GetComponent<Text>().text = inventory.slotList[i].amount.ToString();
}
void SelectUpdate(){
if(inventory.slotList.Count <= 0){
select.gameObject.SetActive(false);
return;
}
else{
if(select.gameObject.activeSelf == false)
select.gameObject.SetActive(true);
}
float v = Input.GetAxis("Vertical");
if(v > 0){
indice --;
canChangeSel = false;
}
if(v < 0){
indice ++;
canChangeSel = false;
}
if(v == 0){
canChangeSel = true;
}
indice = Mathf.Clamp(indice,0,inventory.slotList.Count -1);
select.position = inventoryUi.GetChild(indice).position;
}
void OnApplicationQuit()
{
inventory.slotList.Clear();
}
}
hendrick22- MembroAvançado
- PONTOS : 2690
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Inventario com ScritableObject
» [TUTORIAL](Csharp) Polimorfismo [PARTE 1]
» [TUTORIAL] IA Simples Parte 2 (Atirar)
» [TUTORIAL] Criando Plants Vs Zombies - parte 2
» [TUTORIAL](Csharp) Herança e método virtual [PARTE 2]
» [TUTORIAL](Csharp) Polimorfismo [PARTE 1]
» [TUTORIAL] IA Simples Parte 2 (Atirar)
» [TUTORIAL] Criando Plants Vs Zombies - parte 2
» [TUTORIAL](Csharp) Herança e método virtual [PARTE 2]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos