InventoryScreen

This commit is contained in:
Aggtaa 2026-01-11 21:49:16 +03:00
parent 603b2d3469
commit 511914955b
24 changed files with 445 additions and 169 deletions

View File

@ -1127,6 +1127,14 @@
<HintPath>C:\Program Files\Unity\Hub\Editor\6000.3.2f1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll</HintPath> <HintPath>C:\Program Files\Unity\Hub\Editor\6000.3.2f1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="UnityEditor.TestRunner">
<HintPath>Library\ScriptAssemblies\UnityEditor.TestRunner.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.TestRunner">
<HintPath>Library\ScriptAssemblies\UnityEngine.TestRunner.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.RenderPipelines.Core.Editor"> <Reference Include="Unity.RenderPipelines.Core.Editor">
<HintPath>Library\ScriptAssemblies\Unity.RenderPipelines.Core.Editor.dll</HintPath> <HintPath>Library\ScriptAssemblies\Unity.RenderPipelines.Core.Editor.dll</HintPath>
<Private>False</Private> <Private>False</Private>

View File

@ -59,15 +59,20 @@
<Compile Include="Assets\Scripts\DataPersistence\SerializableTypes\SerializableDictionary.cs" /> <Compile Include="Assets\Scripts\DataPersistence\SerializableTypes\SerializableDictionary.cs" />
<Compile Include="Assets\Scripts\Inventory\UIToolkitInfoPanel.cs" /> <Compile Include="Assets\Scripts\Inventory\UIToolkitInfoPanel.cs" />
<Compile Include="Assets\Scripts\Blackboard.cs" /> <Compile Include="Assets\Scripts\Blackboard.cs" />
<Compile Include="Assets\Scripts\UI\InventoryScreenInvoker.cs" />
<Compile Include="Assets\Scripts\DataPersistence\Data\ShelfData.cs" /> <Compile Include="Assets\Scripts\DataPersistence\Data\ShelfData.cs" />
<Compile Include="Assets\Scripts\UI\InfoBox.cs" /> <Compile Include="Assets\Scripts\UI\InfoBox.cs" />
<Compile Include="Assets\Scripts\UI\InventoryScreen.cs" />
<Compile Include="Assets\Scripts\DataPersistence\DataPersistenceManager.cs" /> <Compile Include="Assets\Scripts\DataPersistence\DataPersistenceManager.cs" />
<Compile Include="Assets\Scripts\IInventoryHolder.cs" /> <Compile Include="Assets\Scripts\IInventoryHolder.cs" />
<Compile Include="Assets\Scripts\DataPersistence\Data\InventoryData.cs" /> <Compile Include="Assets\Scripts\DataPersistence\Data\InventoryData.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="Assets\UI\InventoryScreen.uss" />
<None Include="Assets\UI\InfoBox.uss" /> <None Include="Assets\UI\InfoBox.uss" />
<None Include="Assets\UI\InfoBox.uxml" /> <None Include="Assets\UI\InfoBox.uxml" />
<None Include="Assets\UI\InventoryScreenItem.uxml" />
<None Include="Assets\UI\InventoryScreen.uxml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="UnityEngine"> <Reference Include="UnityEngine">

View File

@ -10,6 +10,10 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 4372894855564474151} - component: {fileID: 4372894855564474151}
- component: {fileID: 6270991334037110281} - component: {fileID: 6270991334037110281}
- component: {fileID: 5846412999564046821}
- component: {fileID: 1184499778079033655}
- component: {fileID: 7230547540517293290}
- component: {fileID: 7458587233354274444}
m_Layer: 0 m_Layer: 0
m_Name: Player m_Name: Player
m_TagString: Untagged m_TagString: Untagged
@ -91,3 +95,88 @@ SpriteRenderer:
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 1
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!61 &5846412999564046821
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4365714411379426835}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0.21133333}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.28866667}
oldSize: {x: 1, y: 1}
newSize: {x: 1, y: 1}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!114 &1184499778079033655
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4365714411379426835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cffc1654223acc54f9aa045c5a7730a3, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerInventory
--- !u!114 &7230547540517293290
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4365714411379426835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 687937cfe3daa04489c5323f36aef2e7, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
uiAsset: {fileID: 9197481963319205126, guid: 6b3866a73cab45c429ffb420315993ca, type: 3}
uiPanelSettings: {fileID: 11400000, guid: 7b1015287071c934bb8054c1ae46eccd, type: 2}
AlwaysVisible: 1
--- !u!114 &7458587233354274444
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4365714411379426835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38451aa38ba98df4f939ff6b7b8214c2, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::InventoryScreenInvoker

View File

@ -12,8 +12,8 @@ GameObject:
- component: {fileID: 6329482849752991534} - component: {fileID: 6329482849752991534}
- component: {fileID: 5507466453634029947} - component: {fileID: 5507466453634029947}
- component: {fileID: -5117840549013073363} - component: {fileID: -5117840549013073363}
- component: {fileID: -3893633335331372781}
- component: {fileID: -3570956179444851343} - component: {fileID: -3570956179444851343}
- component: {fileID: -1329949174847138657}
m_Layer: 0 m_Layer: 0
m_Name: Shelf m_Name: Shelf
m_TagString: Untagged m_TagString: Untagged
@ -154,29 +154,6 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::InventoryHolder m_EditorClassIdentifier: Assembly-CSharp::InventoryHolder
type: shelf type: shelf
--- !u!114 &-3893633335331372781
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4557172615047839809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
m_PanelSettings: {fileID: 11400000, guid: 7b1015287071c934bb8054c1ae46eccd, type: 2}
m_ParentUI: {fileID: 0}
sourceAsset: {fileID: 9197481963319205126, guid: 6b3866a73cab45c429ffb420315993ca, type: 3}
m_SortingOrder: 0
m_Position: 0
m_WorldSpaceSizeMode: 1
m_WorldSpaceWidth: 1920
m_WorldSpaceHeight: 1080
m_PivotReferenceSize: 0
m_Pivot: 0
m_WorldSpaceCollider: {fileID: 0}
--- !u!114 &-3570956179444851343 --- !u!114 &-3570956179444851343
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -189,6 +166,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 687937cfe3daa04489c5323f36aef2e7, type: 3} m_Script: {fileID: 11500000, guid: 687937cfe3daa04489c5323f36aef2e7, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::InfoBox m_EditorClassIdentifier: Assembly-CSharp::InfoBox
worldOffset: {x: 0, y: 0, z: 0} uiAsset: {fileID: 9197481963319205126, guid: 6b3866a73cab45c429ffb420315993ca, type: 3}
uiDocument: {fileID: -3893633335331372781} uiPanelSettings: {fileID: 11400000, guid: 7b1015287071c934bb8054c1ae46eccd, type: 2}
AlwaysVisible: 1 AlwaysVisible: 1
--- !u!114 &-1329949174847138657
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4557172615047839809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38451aa38ba98df4f939ff6b7b8214c2, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::InventoryScreenInvoker

View File

@ -560,6 +560,77 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2016876939
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2016876940}
- component: {fileID: 2016876941}
- component: {fileID: 2016876942}
m_Layer: 0
m_Name: InventoryScreen
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2016876940
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2016876939}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1.23016, y: -0.05425, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2016876941
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2016876939}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 631c59a16a4091a4caa7b4ff24839552, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::InventoryScreen
uiAsset: {fileID: 9197481963319205126, guid: 3f702f69419923044856bc754559430b, type: 3}
uiItemAsset: {fileID: 9197481963319205126, guid: eb46dce908061864c935406ab889f172, type: 3}
uiPanelSettings: {fileID: 11400000, guid: 7b1015287071c934bb8054c1ae46eccd, type: 2}
--- !u!114 &2016876942
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2016876939}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
m_PanelSettings: {fileID: 11400000, guid: 7b1015287071c934bb8054c1ae46eccd, type: 2}
m_ParentUI: {fileID: 0}
sourceAsset: {fileID: 9197481963319205126, guid: 3f702f69419923044856bc754559430b, type: 3}
m_SortingOrder: 1
m_Position: 0
m_WorldSpaceSizeMode: 1
m_WorldSpaceWidth: 1920
m_WorldSpaceHeight: 1080
m_PivotReferenceSize: 0
m_Pivot: 0
m_WorldSpaceCollider: {fileID: 0}
--- !u!1001 &3377531241049282641 --- !u!1001 &3377531241049282641
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -574,11 +645,11 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4372894855564474151, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3} - target: {fileID: 4372894855564474151, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: 0.359 value: -7.99
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4372894855564474151, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3} - target: {fileID: 4372894855564474151, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
value: -1.05 value: -4.12
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4372894855564474151, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3} - target: {fileID: 4372894855564474151, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
@ -615,121 +686,8 @@ PrefabInstance:
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: m_AddedComponents: []
- targetCorrespondingSourceObject: {fileID: 4365714411379426835, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
insertIndex: -1
addedObject: {fileID: 3377531241049282649}
- targetCorrespondingSourceObject: {fileID: 4365714411379426835, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
insertIndex: -1
addedObject: {fileID: 3377531241049282647}
- targetCorrespondingSourceObject: {fileID: 4365714411379426835, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
insertIndex: -1
addedObject: {fileID: 3377531241049282648}
- targetCorrespondingSourceObject: {fileID: 4365714411379426835, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
insertIndex: -1
addedObject: {fileID: 3377531241049282650}
m_SourcePrefab: {fileID: 100100000, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
--- !u!1 &3377531241049282642 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4365714411379426835, guid: 19c1ccebaf45a40478633ddde15bf4d7, type: 3}
m_PrefabInstance: {fileID: 3377531241049282641}
m_PrefabAsset: {fileID: 0}
--- !u!114 &3377531241049282647
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3377531241049282642}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 687937cfe3daa04489c5323f36aef2e7, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
worldOffset: {x: 0, y: 0, z: 0}
uiDocument: {fileID: 3377531241049282648}
AlwaysVisible: 1
--- !u!114 &3377531241049282648
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3377531241049282642}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
m_PanelSettings: {fileID: 11400000, guid: 7b1015287071c934bb8054c1ae46eccd, type: 2}
m_ParentUI: {fileID: 0}
sourceAsset: {fileID: 9197481963319205126, guid: 6b3866a73cab45c429ffb420315993ca, type: 3}
m_SortingOrder: 0
m_Position: 0
m_WorldSpaceSizeMode: 1
m_WorldSpaceWidth: 1920
m_WorldSpaceHeight: 1080
m_PivotReferenceSize: 0
m_Pivot: 0
m_WorldSpaceCollider: {fileID: 0}
--- !u!114 &3377531241049282649
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3377531241049282642}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cffc1654223acc54f9aa045c5a7730a3, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerInventory
--- !u!61 &3377531241049282650
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3377531241049282642}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0.21133333}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.28866667}
oldSize: {x: 1, y: 1}
newSize: {x: 1, y: 1}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!1660057539 &9223372036854775807 --- !u!1660057539 &9223372036854775807
SceneRoots: SceneRoots:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -740,3 +698,4 @@ SceneRoots:
- {fileID: 1754384487} - {fileID: 1754384487}
- {fileID: 1009813490} - {fileID: 1009813490}
- {fileID: 339608289} - {fileID: 339608289}
- {fileID: 2016876940}

View File

@ -1,4 +1,5 @@
internal interface IInventoryHolder public interface IInventoryHolder
{ {
public Inventory Inventory { get; } public Inventory Inventory { get; }
public string Name { get; }
} }

View File

@ -6,6 +6,8 @@ public class Player : MonoBehaviour, IInventoryHolder, IDataPersistence<GameData
public Inventory Inventory => inventory; public Inventory Inventory => inventory;
public string Name => gameObject.name;
void Awake() void Awake()
{ {
// Add("Лимонад", 5); // Add("Лимонад", 5);
@ -23,7 +25,6 @@ public class Player : MonoBehaviour, IInventoryHolder, IDataPersistence<GameData
// } // }
// } // }
public void LoadData(GameData data) public void LoadData(GameData data)
{ {
inventory.LoadData(data.player.inventory); inventory.LoadData(data.player.inventory);

View File

@ -6,6 +6,8 @@ public class Shelf : MonoBehaviour, IInventoryHolder, IDataPersistence<ShelfData
public Inventory Inventory => inventory; public Inventory Inventory => inventory;
public string Name => type;
public string type = "shelf"; public string type = "shelf";
void Awake() void Awake()

View File

@ -4,12 +4,15 @@ using UnityEngine.UIElements;
public class InfoBox : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler public class InfoBox : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{ {
// public Vector3 worldOffset = new Vector3(0, 1f, 0); [SerializeField]
public Vector3 worldOffset = new Vector3(0, 0, 0); private VisualTreeAsset uiAsset;
[SerializeField]
private PanelSettings uiPanelSettings;
public UIDocument uiDocument;
public bool AlwaysVisible; public bool AlwaysVisible;
private UIDocument uiDocument;
private Camera mainCamera; private Camera mainCamera;
private IInventoryHolder inventoryHolder; private IInventoryHolder inventoryHolder;
private Label infoBox; private Label infoBox;
@ -17,20 +20,19 @@ public class InfoBox : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
void Start() void Start()
{ {
mainCamera = Camera.main; mainCamera = Camera.main;
if (uiDocument != null)
{
infoBox = uiDocument.rootVisualElement.Q<Label>("InfoBox");
inventoryHolder = GetComponent<IInventoryHolder>(); inventoryHolder = GetComponent<IInventoryHolder>();
}
uiDocument = gameObject.AddComponent<UIDocument>();
uiDocument.panelSettings = uiPanelSettings;
uiDocument.visualTreeAsset = uiAsset;
infoBox = uiDocument.rootVisualElement.Q<Label>("InfoBox");
} }
void Update() void Update()
{
// if (infoBox != null)
{ {
// Convert world position to screen space // Convert world position to screen space
Vector3 screenPos = mainCamera.WorldToScreenPoint(transform.position + worldOffset); Vector3 screenPos = mainCamera.WorldToScreenPoint(transform.position);
// Update panel position (UI Toolkit uses top-left origin) // Update panel position (UI Toolkit uses top-left origin)
infoBox.style.left = screenPos.x; infoBox.style.left = screenPos.x;
@ -39,15 +41,11 @@ public class InfoBox : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
UpdateText(); UpdateText();
} }
}
void UpdateText() void UpdateText()
{
// if (infoBox != null)
{ {
infoBox.text = inventoryHolder.Inventory.ToString(); infoBox.text = inventoryHolder.Inventory.ToString();
} }
}
public void OnPointerEnter(PointerEventData eventData) public void OnPointerEnter(PointerEventData eventData)
{ {

View File

@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UIElements;
public class InventoryScreen : MonoBehaviour
{
[SerializeField]
private VisualTreeAsset uiItemAsset;
private UIDocument uiDocument;
private VisualElement root;
private VisualElement itemList;
private Label headerLabel;
private Label footerLabel;
private IInventoryHolder inventoryHolder;
private IInventoryHolder targetInventoryHolder;
void OnEnable()
{
uiDocument = GetComponent<UIDocument>();
root = uiDocument.rootVisualElement;
var inventory = root.Q("Inventory");
root.style.display = DisplayStyle.None;
itemList = inventory.Q("Inventory").Q("ContainerScroll");
headerLabel = inventory.Q<Label>("Header");
footerLabel = inventory.Q<Label>("Footer");
root.RegisterCallback<ClickEvent>(OnRootClicked);
inventory.RegisterCallback<ClickEvent>(evt => evt.StopPropagation());
}
private void OnRootClicked(ClickEvent evt)
{
Debug.Log("Root Clicked");
Hide();
}
private void Show()
{
root.style.display = DisplayStyle.Flex;
}
private void Hide()
{
root.style.display = DisplayStyle.None;
}
public void Display(IInventoryHolder inventory, IInventoryHolder targetInventory = null)
{
this.inventoryHolder = inventory;
this.targetInventoryHolder = inventory;
itemList.Clear();
foreach (var item in inventory.Inventory.Items)
{
var child = uiItemAsset.Instantiate();
// child.AddToClassList(".item");
child.Q<Label>("Name").text = item.Key;
child.Q<Label>("Quantity").text = item.Value.ToString();
itemList.Add(child);
}
headerLabel.text = inventory.Name;
footerLabel.text = $"Свободно: {inventory.Inventory.Free}";
Show();
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 631c59a16a4091a4caa7b4ff24839552

View File

@ -0,0 +1,31 @@
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UIElements;
public class InventoryScreenInvoker : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Show();
}
private void Show()
{
var inventoryScreen = FindObjectsByType<InventoryScreen>(FindObjectsSortMode.None).First();
if (inventoryScreen == null)
{
Debug.Log("No inventory screen defined on current scene");
return;
}
var inventory = GetComponent<IInventoryHolder>();
if (inventory == null)
{
Debug.Log("Cannot show inventory screen on an object without an inventory");
return;
}
inventoryScreen.Display(inventory);
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 38451aa38ba98df4f939ff6b7b8214c2

View File

@ -0,0 +1,37 @@
#Screen {
flex-grow: 1;
/* padding-left: 30px; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; */
flex-direction: row;
flex-basis: auto;
align-content: flex-start;
align-self: auto;
justify-content: space-around;
align-items: stretch;
margin: 30px;
}
.inventory {
width: initial;
aspect-ratio: 0.7;
background-color: rgb(255, 0, 0);
/* max-width: 40%; */
margin: 10px;
flex-grow: 1;
}
.inventory > .header {
-unity-text-align: middle-center;
font-size: 24px;
}
.inventory > .container {
}
.inventory > .container .item {
height: auto;
width: 30%;
margin: 10px;
padding: 4px;
background-color: rgb(255, 255, 0);
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 32cc109c30db4d449bcd8b7bffbef9ba
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
disableValidation: 0
unsupportedSelectorAction: 0

View File

@ -0,0 +1,12 @@
<ui:UXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<Style src="project://database/Assets/UI/InventoryScreen.uss?fileID=7433441132597879392&amp;guid=32cc109c30db4d449bcd8b7bffbef9ba&amp;type=3#InventoryScreen"/>
<ui:VisualElement name="Screen">
<ui:VisualElement name="Inventory" class="inventory" style="flex-grow: 0;">
<ui:Label text="Inventory Holder Name" name="Header" enable-rich-text="true" class="header"/>
<ui:VisualElement name="Container" class="container" style="flex-grow: 1; flex-basis: auto;">
<ui:ScrollView name="ContainerScroll" style="height: 100%; width: 100%; flex-direction: column; flex-wrap: wrap; align-items: flex-start; flex-grow: 1;"/>
</ui:VisualElement>
<ui:Label text="Footer" name="Footer" class="footer"/>
</ui:VisualElement>
</ui:VisualElement>
</ui:UXML>

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 3f702f69419923044856bc754559430b
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}

View File

@ -0,0 +1,7 @@
<ui:UXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<Style src="project://database/Assets/UI/InventoryScreen.uss?fileID=7433441132597879392&amp;guid=32cc109c30db4d449bcd8b7bffbef9ba&amp;type=3#InventoryScreen"/>
<ui:VisualElement name="ItemTemplate" class="item">
<ui:Label text="Name" name="Name" class="name"/>
<ui:Label text="Quantity" name="Quantity" class="quantity"/>
</ui:VisualElement>
</ui:UXML>

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: eb46dce908061864c935406ab889f172
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}

View File

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0} m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0}
m_Name: InfoBox m_Name: ScreenSpace
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.PanelSettings m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.PanelSettings
themeUss: {fileID: -4733365628477956816, guid: e35a989aa0a0ee049a4e4d467ba9881e, type: 3} themeUss: {fileID: -4733365628477956816, guid: e35a989aa0a0ee049a4e4d467ba9881e, type: 3}
m_DisableNoThemeWarning: 0 m_DisableNoThemeWarning: 0

View File

@ -0,0 +1,19 @@
{
"MonoBehaviour": {
"Version": 5,
"EnableBurstCompilation": true,
"EnableOptimisations": true,
"EnableSafetyChecks": false,
"EnableDebugInAllBuilds": false,
"DebugDataKind": 1,
"EnableArmv9SecurityFeatures": false,
"CpuMinTargetX32": 0,
"CpuMaxTargetX32": 0,
"CpuMinTargetX64": 0,
"CpuMaxTargetX64": 0,
"CpuTargetsX32": 6,
"CpuTargetsX64": 72,
"OptimizeFor": 0,
"FloatMode": 0
}
}

View File

@ -0,0 +1,6 @@
{
"MonoBehaviour": {
"Version": 5,
"DisabledWarnings": ""
}
}

View File

@ -6,7 +6,7 @@ EditorBuildSettings:
serializedVersion: 2 serializedVersion: 2
m_Scenes: m_Scenes:
- enabled: 1 - enabled: 1
path: Assets/Scenes/SampleScene.unity path: Assets/Scenes/MainScene.unity
guid: 8c9cfa26abfee488c85f1582747f6a02 guid: 8c9cfa26abfee488c85f1582747f6a02
m_configObjects: m_configObjects:
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}