bugfix/HideUpgradesOnDeselect (#9)

Retire le UI du UnitTree quand on clique sur n'importe quoi d'autre

Co-authored-by: Ader Alisma 01 <adeder22@hotmail.com>
Reviewed-on: #9
Reviewed-by: EliaGingras1 <william-gin1@hotmail.com>
This commit is contained in:
Ader_Alisma 2025-09-07 22:48:30 +00:00
parent b05a3245c0
commit a15a75a603
5 changed files with 163 additions and 9 deletions

View File

@ -30,6 +30,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3501783116545349986}
- {fileID: 6716417799655040460}
- {fileID: 7628964284593499177}
- {fileID: 1691244495608687713}
@ -94,7 +95,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4817988606444742094}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -127,6 +128,82 @@ MonoBehaviour:
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &7208680640146097829
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3501783116545349986}
- component: {fileID: 4692438377285158079}
- component: {fileID: 5060206313964554553}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &3501783116545349986
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7208680640146097829}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 46.65209, y: 30.223253, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4817988606444742094}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4692438377285158079
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7208680640146097829}
m_CullTransparentMesh: 1
--- !u!114 &5060206313964554553
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7208680640146097829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1001 &2008641878076503636
PrefabInstance:
m_ObjectHideFlags: 0
@ -156,7 +233,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 907652127959947829, guid: 7a4156822defb3f4bb8a2ed6de7cacdb, type: 3}
propertyPath: m_RootOrder
value: 2
value: 3
objectReference: {fileID: 0}
- target: {fileID: 907652127959947829, guid: 7a4156822defb3f4bb8a2ed6de7cacdb, type: 3}
propertyPath: m_AnchorMax.x
@ -330,7 +407,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 907652127959947829, guid: 7a4156822defb3f4bb8a2ed6de7cacdb, type: 3}
propertyPath: m_RootOrder
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 907652127959947829, guid: 7a4156822defb3f4bb8a2ed6de7cacdb, type: 3}
propertyPath: m_AnchorMax.x
@ -500,7 +577,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 907652127959947829, guid: 7a4156822defb3f4bb8a2ed6de7cacdb, type: 3}
propertyPath: m_RootOrder
value: 1
value: 2
objectReference: {fileID: 0}
- target: {fileID: 907652127959947829, guid: 7a4156822defb3f4bb8a2ed6de7cacdb, type: 3}
propertyPath: m_AnchorMax.x

View File

@ -4711,6 +4711,19 @@ MonoBehaviour:
m_EditorClassIdentifier:
_pauseButton: {fileID: 2019202048}
_speedButton: {fileID: 1709530845}
--- !u!114 &1760532844
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 829543639}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4c63e60a445cf4549999d898b25ab0ea, type: 3}
m_Name:
m_EditorClassIdentifier:
_canvas: {fileID: 1092900231}
--- !u!1 &1761692192
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,6 +1,7 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class AllyUpgrade : MonoBehaviour, IPointerClickHandler
{
@ -28,27 +29,30 @@ public class AllyUpgrade : MonoBehaviour, IPointerClickHandler
{
_instance = Instantiate(_upgradeUI, Camera.main.WorldToScreenPoint(transform.position), Quaternion.identity, canvas.transform);
AssignUpgrades(canvas);
DeselectManager.Instance.SetAllyUpgrade(_instance);
}
}
}
else
{
Destroy(_instance);
_instance = null;
}
}
}
private void AssignUpgrades(Canvas canvas)
{
// Assign upgrade Prefabs
// Assign upgrade Prefabs
for (int i = 0; i < _instance.transform.childCount - 1; i++)
{
if (_upgradeList.Count > i && _upgradeList[i] != null)
{
GameObject upgradeEnfant = _instance.transform.GetChild(i).gameObject;
UpgradePlacementButton button = upgradeEnfant.GetComponent<UpgradePlacementButton>();
button.Initialize(_upgradeList[i], gameObject, canvas);
GameObject upgradeEnfant = _instance.transform.Find("Upgrade" + (i + 1)).gameObject;
if (upgradeEnfant.TryGetComponent<UpgradePlacementButton>(out UpgradePlacementButton button))
{
button.Initialize(_upgradeList[i], gameObject, canvas);
}
}
}
}
@ -58,6 +62,7 @@ public class AllyUpgrade : MonoBehaviour, IPointerClickHandler
if (_instance != null)
{
Destroy(_instance);
_instance = null;
}
}
}

View File

@ -0,0 +1,48 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DeselectManager : SingletonBehaviour<DeselectManager>
{
private GameObject _allyUpgrade;
[SerializeField]
private Canvas _canvas;
private void Update()
{
if (Input.GetMouseButton(0) && _allyUpgrade != null)
{
// Vérifie si click est sur un enfant d'AllyUpgrade
PointerEventData pointerData = new PointerEventData(EventSystem.current)
{
position = Input.mousePosition
};
List<RaycastResult> results = new List<RaycastResult>();
GraphicRaycaster raycaster = _canvas.GetComponent<GraphicRaycaster>();
raycaster.Raycast(pointerData, results);
foreach (RaycastResult result in results)
{
if (result.gameObject.transform.IsChildOf(_allyUpgrade.transform))
{
return;
}
}
SetAllyUpgrade(null);
}
}
public void SetAllyUpgrade(GameObject allyUpgradeInstance)
{
if (_allyUpgrade == null)
{
_allyUpgrade = allyUpgradeInstance;
}
else if (_allyUpgrade != allyUpgradeInstance)
{
Destroy(_allyUpgrade);
_allyUpgrade = allyUpgradeInstance;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4c63e60a445cf4549999d898b25ab0ea
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: