- Home /
Why does EventSystem.IsPointerOverGameObject(-1) interact with all of my three canvas, instead of only the Inventory Canvas?
I was programming my crafting system and my inventory when i noticed: the text that should SetActive() when the player's mouse pointer was over the inventory slot was being applied to every image and canvas (I have three canvas, InventoryCanvas, CraftingCanvas, InfoCanvas(shows life, weight, mana and hunger stats)), when I only want this to occur to my inventory slots. Someone could help me? If so I would thanks.
And one more thing, I did assign this script to all my inventory slots, and I thought the EventSystem would only work with the GameObjects their assigned to:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class PlayerItems : MonoBehaviour
{
public Text itemText;
[SerializeField]private GameObject tooltip;
[SerializeField]private string description;
[SerializeField]private string itemName;
public EventSystem eventSystem;
[SerializeField]private CanvasGroup canvasGroup;
public int itemAmount;
[SerializeField]private int maxItemVal;
private int minItemVal;
[SerializeField]private float weightLoss;
[SerializeField]private Text infoSizeText;
[SerializeField]private Text infoVisualText;
[SerializeField]private GameObject dropItem;
[SerializeField]private Transform dropArea;
public bool sapling;
public bool tool;
private PlayerCS playerCsInstance;
public PlayerCS PlayerCsInstance
{
get
{
if (playerCsInstance == null)
{
playerCsInstance = GameObject.FindObjectOfType<PlayerCS>();
}
return playerCsInstance;
}
set {playerCsInstance = value;}
}
private PlayerInventory playerInvInstance;
public PlayerInventory PlayerInvInstance
{
get
{
if (playerInvInstance == null)
{
playerInvInstance = GameObject.FindObjectOfType<PlayerInventory>();
}
return playerInvInstance;
}
set {playerInvInstance = value;}
}
[SerializeField]private bool ectoJar;
[SerializeField]private bool soulJar;
public bool torch;
void Start ()
{
minItemVal = 0;
}
void Update ()
{
if (itemAmount > maxItemVal) {itemAmount = maxItemVal;}
if (itemAmount < minItemVal) {itemAmount = minItemVal;}
if (itemAmount > 0) {itemText.text = itemAmount.ToString();}
if (itemAmount <= 0) {itemText.text = " ";}
if (eventSystem.IsPointerOverGameObject(-2) && canvasGroup.alpha == 1 && !tool)
{
infoSizeText.text = GetToolTip();
infoVisualText.text = GetToolTip();
tooltip.SetActive(true);
}
else if (!tool) {tooltip.SetActive(false);}
}
public void DropItem ()
{
if (!Input.GetKey(KeyCode.LeftShift) && itemAmount > 0 && !sapling && !torch)
{
Instantiate(dropItem, dropArea.position, dropArea.rotation);
itemAmount--;
PlayerInvInstance.weightBar.CurrentVal -= weightLoss;
}
if (!Input.GetKey(KeyCode.LeftShift) && itemAmount > 0 && sapling)
{
float tmpfl = dropArea.position.y+0.5f;
Quaternion tmp = new Quaternion(dropItem.transform.rotation.x, dropArea.rotation.y, dropArea.rotation.z, 0);
Vector3 temp = new Vector3(dropArea.position.x, tmpfl, dropArea.position.z);
Instantiate(dropItem, temp, dropItem.transform.rotation);
itemAmount--;
PlayerInvInstance.weightBar.CurrentVal -= weightLoss;
}
ItemDrop item = dropItem.GetComponent<ItemDrop>();
if (Input.GetKey(KeyCode.LeftShift) && itemAmount > 0)
{
if (soulJar)
{
PlayerCS.isUnderSoulJar = true;
itemAmount--;
}
if (ectoJar)
{
PlayerCS.isUnderEctoJar = true;
itemAmount--;
}
}
}
public string GetToolTip ()
{
string newLine = string.Empty;
string color = string.Empty;
if (description != string.Empty)
{
newLine = "\n";
}
if (itemName != string.Empty)
{
color = "green";
}
/*string info = itemName.ToString() + "\n" + description.ToString();
infoVisualText.text = info.ToString();
infoSizeText.text = info.ToString();*/
return string.Format("<color="+color+"><size=16>{0}</color></size><size=14><i>"+newLine+"{1}</size></i>", itemName, description);
}
Your answer
Follow this Question
Related Questions
loop index error? JS 1 Answer
Looking for some help with theory on my crafting system 2 Answers
C# - Check if one list contains the same elements as another? 1 Answer
How can you make an inventory and crafting system? 0 Answers
Prevent IDragHandler from also triggering PointerClickHandler? 2 Answers