Assets/Prefabs/Managers/UI.prefab | ●●●●● patch | view | raw | blame | history | |
Assets/Prefabs/Managers/UI.prefab.meta | ●●●●● patch | view | raw | blame | history | |
Assets/Prefabs/UI/ItemUI.prefab | ●●●●● patch | view | raw | blame | history | |
Assets/Scenes/GameplayScene.unity | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/Inventory/InventoryDisplay.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/Inventory/ItemUIScript.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/Inventory/ItemUIScript.cs.meta | ●●●●● patch | view | raw | blame | history | |
ProjectSettings/ProjectSettings.asset | ●●●●● patch | view | raw | blame | history |
Assets/Prefabs/Managers/UI.prefab
New file Diff too large Assets/Prefabs/Managers/UI.prefab.meta
New file @@ -0,0 +1,7 @@ fileFormatVersion: 2 guid: 02acdd1a77bc039499d062956646f4f8 PrefabImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: Assets/Prefabs/UI/ItemUI.prefab
@@ -12,6 +12,8 @@ - component: {fileID: 7567492242401966963} - component: {fileID: 3595669150549702758} - component: {fileID: 4539871696051037875} - component: {fileID: 6097422381394106856} - component: {fileID: 5755656717305505260} m_Layer: 5 m_Name: ItemUI m_TagString: Untagged @@ -96,6 +98,62 @@ m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 --- !u!114 &6097422381394106856 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1536595002982607090} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} m_SelectOnRight: {fileID: 0} m_Transition: 1 m_Colors: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 0} m_OnClick: m_PersistentCalls: m_Calls: [] --- !u!114 &5755656717305505260 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1536595002982607090} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 519c952913e3ff344a7b23eb0020d6ca, type: 3} m_Name: m_EditorClassIdentifier: --- !u!1 &4844031224436336669 GameObject: m_ObjectHideFlags: 0 Assets/Scenes/GameplayScene.unity
Diff too large Assets/Scripts/Inventory/InventoryDisplay.cs
@@ -1,3 +1,4 @@ using Assets.Scripts.Enums; using System; using System.Collections; using System.Collections.Generic; @@ -13,6 +14,8 @@ public GameObject inventoryPanel; public GameObject itemContent; public GameObject itemUIPrefab; public GameObject itemNameDescription; public GameObject itemDescription; public List<GameObject> itemUIs = new List<GameObject>(); @@ -57,11 +60,11 @@ inventoryPanel.SetActive(!inventoryPanel.activeSelf); if (inventoryPanel.activeSelf) { GenerateItemContentList(); UpdateItemContentList(); } else { ClearItemContentList(); //ClearItemContentList(); } } } @@ -96,16 +99,67 @@ // GenerateItemContentList(); //} private void GenerateItemContentList() //TODO: Delete this //private void GenerateItemContentList() //{ // inventory.items?.ForEach(slot => // { // GameObject itemUI = Instantiate(itemUIPrefab, itemContent.transform); // itemUI.transform.Find("ItemName").GetComponent<TextMeshProUGUI>().text = slot.item.itemName; // itemUI.transform.Find("ItemQuantity").GetComponent<TextMeshProUGUI>().text = slot.quantity.ToString() + "x"; // itemUI.transform.Find("ItemIcon").GetComponent<Image>().sprite = slot.item.itemIcon; // itemUIs.Add(itemUI); // }); //} public void OnItemClick(InventorySlot inventorySlot) { inventory.items?.ForEach(slot => //// If itemNameDescription doesn't exist or doesn't have required component, create it //if (itemNameDescription == null || itemNameDescription.GetComponent<ItemUIScript>() == null) //{ // Debug.LogError("ItemNameDescription is not properly set up with ItemUIScript component"); // return; //} //// Toggle the description panel //itemNameDescription.SetActive(!itemNameDescription.activeSelf); //if (itemNameDescription.activeSelf) //{ // var itemUIScript = itemNameDescription.GetComponent<ItemUIScript>(); // if (itemUIScript != null) // { // itemUIScript.InventorySlot = item.InventorySlot; // } // else // { // Debug.LogError("ItemUIScript component not found on itemNameDescription"); // } //} //// Toggle the description panel //itemNameDescription.SetActive(!itemNameDescription.activeSelf); //if (itemNameDescription.activeSelf) //{ // // Update description panel content // var nameText = itemNameDescription.transform.Find("ItemName")?.GetComponent<TextMeshProUGUI>(); // //var descriptionText = itemNameDescription.transform.Find("Description")?.GetComponent<TextMeshProUGUI>(); // itemNameDescription.GetComponent<ItemUIScript>().InventorySlot = item.InventorySlot; // //if (nameText != null) nameText.text = item.InventorySlot.item.itemName; // //if (descriptionText != null) descriptionText.text = item.InventorySlot.item.itemDescription; //} if (itemNameDescription.GetComponent<ItemUIScript>()?.InventorySlot?.item?.itemName == inventorySlot.item.itemName) { GameObject itemUI = Instantiate(itemUIPrefab, itemContent.transform); itemUI.transform.Find("ItemName").GetComponent<TextMeshProUGUI>().text = slot.item.itemName; itemUI.transform.Find("ItemQuantity").GetComponent<TextMeshProUGUI>().text = slot.quantity.ToString() + "x"; itemUI.transform.Find("ItemIcon").GetComponent<Image>().sprite = slot.item.itemIcon; itemUIs.Add(itemUI); }); itemDescription.SetActive(!itemNameDescription.activeSelf); itemNameDescription.SetActive(!itemNameDescription.activeSelf); } else { itemDescription.SetActive(true); itemNameDescription.SetActive(true); } itemNameDescription.GetComponent<ItemUIScript>().InventorySlot = inventorySlot; itemDescription.GetComponent<ItemUIScript>().InventorySlot = inventorySlot; } private void UpdateItemContentList() @@ -119,24 +173,39 @@ inventory.items.ForEach(slot => { GameObject itemUI; bool isCreated = false; // Reuse existing UI element if available if (currentIndex < itemUIs.Count) { itemUI = itemUIs[currentIndex]; //itemUI.GetComponent<ItemUIScript>().InventorySlot = slot; itemUI.SetActive(true); } else { // Create new UI element if needed itemUI = Instantiate(itemUIPrefab, itemContent.transform); //itemUI.GetComponent<ItemUIScript>().InventorySlot = slot; itemUIs.Add(itemUI); isCreated = true; } ItemUIScript itemUIScript = itemUI.GetComponent<ItemUIScript>(); itemUIScript.InventorySlot = slot; // Add click event listener only if the itemUI was just created if (isCreated) itemUI.GetComponent<Button>().onClick.AddListener(() => OnItemClick(itemUIScript.InventorySlot)); else { // Update the itemUIScript of the itemNameDescription panel if the item is already selected if (itemNameDescription.GetComponent<ItemUIScript>()?.InventorySlot?.item?.itemName == slot.item.itemName) itemNameDescription.GetComponent<ItemUIScript>().InventorySlot = slot; } // Update the UI elements itemUI.transform.Find("ItemName").GetComponent<TextMeshProUGUI>().text = slot.item.itemName; itemUI.transform.Find("ItemQuantity").GetComponent<TextMeshProUGUI>().text = slot.quantity.ToString() + "x"; itemUI.transform.Find("ItemIcon").GetComponent<Image>().sprite = slot.item.itemIcon; //itemUI.transform.Find("ItemName").GetComponent<TextMeshProUGUI>().text = slot.item.itemName; //itemUI.transform.Find("ItemQuantity").GetComponent<TextMeshProUGUI>().text = slot.quantity.ToString() + "x"; //itemUI.transform.Find("ItemIcon").GetComponent<Image>().sprite = slot.item.itemIcon; currentIndex++; }); Assets/Scripts/Inventory/ItemUIScript.cs
New file @@ -0,0 +1,43 @@ using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using static UnityEditor.Progress; public enum ItemUIType { ItemNameDescription, ItemDescription } public class ItemUIScript : MonoBehaviour { private InventorySlot inventorySlot; public ItemUIType itemUIType; public InventorySlot InventorySlot { get => inventorySlot; set { inventorySlot = value; switch (itemUIType) { case ItemUIType.ItemNameDescription: gameObject.transform.Find("ItemName").GetComponent<TextMeshProUGUI>().text = inventorySlot.item.itemName; gameObject.transform.Find("ItemQuantity").GetComponent<TextMeshProUGUI>().text = inventorySlot.quantity.ToString() + "x"; gameObject.transform.Find("ItemIcon").GetComponent<Image>().sprite = inventorySlot.item.itemIcon; break; case ItemUIType.ItemDescription: gameObject.transform.Find("ItemDescriptionText").GetComponent<TextMeshProUGUI>().text = inventorySlot.item.itemDescription; break; } } } private void OnDestroy() { gameObject.GetComponent<Button>()?.onClick?.RemoveAllListeners(); } } Assets/Scripts/Inventory/ItemUIScript.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 519c952913e3ff344a7b23eb0020d6ca MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ProjectSettings/ProjectSettings.asset
@@ -78,7 +78,7 @@ androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 0 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 Prepare IOS For Recording: 0