summaryrefslogtreecommitdiff
path: root/SurvivalTest/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'SurvivalTest/Assets/Scripts')
-rw-r--r--SurvivalTest/Assets/Scripts/Devices.meta8
-rw-r--r--SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs12
-rw-r--r--SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/GameApp.cs9
-rw-r--r--SurvivalTest/Assets/Scripts/Items/ItemBase.cs6
-rw-r--r--SurvivalTest/Assets/Scripts/Items/Item_B2Phone.cs8
-rw-r--r--SurvivalTest/Assets/Scripts/Items/Item_SpaceBeamer.cs8
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/BattleManager.cs17
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/BattleManager.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs35
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs10
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs10
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs51
-rw-r--r--SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Resources/ResourceManager.cs2
-rw-r--r--SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs38
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs10
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Panel/PanelBase.cs35
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Panel/PanelEquipBar.cs16
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/ItemWidget.cs118
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/PanelItemBar.cs70
-rw-r--r--SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs37
-rw-r--r--SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs13
-rw-r--r--SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets.meta (renamed from SurvivalTest/Assets/Scripts/UI/Widget.meta)0
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets/UIButton.cs (renamed from SurvivalTest/Assets/Scripts/UI/Widget/UIButton.cs)0
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets/UIButton.cs.meta (renamed from SurvivalTest/Assets/Scripts/UI/Widget/UIButton.cs.meta)0
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs18
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs22
-rw-r--r--SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs8
-rw-r--r--SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs.meta11
37 files changed, 615 insertions, 67 deletions
diff --git a/SurvivalTest/Assets/Scripts/Devices.meta b/SurvivalTest/Assets/Scripts/Devices.meta
new file mode 100644
index 0000000..6a5b0d0
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Devices.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f4cd3d0fd06d3d949981090c941f9e0f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs b/SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs
new file mode 100644
index 0000000..61e347f
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs
@@ -0,0 +1,12 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 设备
+/// </summary>
+public class DeviceBase : MonoBehaviour
+{
+
+
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs.meta b/SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs.meta
new file mode 100644
index 0000000..ba0b4c7
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Devices/DeviceBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7b9b9975b634cad43b8e89424dddb2fc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/GameApp.cs b/SurvivalTest/Assets/Scripts/GameApp.cs
index d5f9d70..cfc93d9 100644
--- a/SurvivalTest/Assets/Scripts/GameApp.cs
+++ b/SurvivalTest/Assets/Scripts/GameApp.cs
@@ -8,13 +8,20 @@ public class GameApp : MonoBehaviour
void Start()
{
-
+ PlayerManager.Instance.Init();
+ BattleManager.Instance.Init();
+
+
}
void Update()
{
+ //公共模块
GameLoop.Instance.Update();
TinyCountDown.Instance.Update();
+
+ BattleManager.Instance.Update();
+ PlayerManager.Instance.Update();
}
void LateUpdate()
diff --git a/SurvivalTest/Assets/Scripts/Items/ItemBase.cs b/SurvivalTest/Assets/Scripts/Items/ItemBase.cs
index 91beca8..a19ebcf 100644
--- a/SurvivalTest/Assets/Scripts/Items/ItemBase.cs
+++ b/SurvivalTest/Assets/Scripts/Items/ItemBase.cs
@@ -8,6 +8,12 @@ using UnityEngine;
public abstract class ItemBase
{
+ public abstract string name { get; }
+
+ public abstract string iconPath { get; }
+
public abstract void OnUse(GameObject owner);
+ public virtual void Update() { }
+
} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Items/Item_B2Phone.cs b/SurvivalTest/Assets/Scripts/Items/Item_B2Phone.cs
index eb870b0..5301d85 100644
--- a/SurvivalTest/Assets/Scripts/Items/Item_B2Phone.cs
+++ b/SurvivalTest/Assets/Scripts/Items/Item_B2Phone.cs
@@ -7,10 +7,18 @@ using UnityEngine;
/// </summary>
public class Item_B2Phone : ItemBase
{
+ public override string name => "B2轰炸机";
+
+ public override string iconPath => "art/ui/skillicon/plane";
+
+ string prefabPath = "prefabs/weapon/b2";
public override void OnUse(GameObject owner)
{
+ TestB2 b2 = UnityEngine.Object.Instantiate(ResourceManager.Instance.Load<TestB2>(prefabPath));
+ Vector3 pos3D = owner.GetComponent<TopDownTransform>().GetProjectedPosition();
+ b2.Set(pos3D + new Vector3(-15, 0, 0), pos3D + new Vector3(15, 0, 0), 20f, 3f);
}
} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Items/Item_SpaceBeamer.cs b/SurvivalTest/Assets/Scripts/Items/Item_SpaceBeamer.cs
index 2ccbb9c..73492ee 100644
--- a/SurvivalTest/Assets/Scripts/Items/Item_SpaceBeamer.cs
+++ b/SurvivalTest/Assets/Scripts/Items/Item_SpaceBeamer.cs
@@ -4,10 +4,18 @@ using UnityEngine;
public class Item_SpaceBeamer : ItemBase
{
+ public override string name => "太空射线";
+
+ public override string iconPath => "art/ui/skillicon/space_beamer";
+
+ string prefabPath = "prefabs/weapon/space_beam";
public override void OnUse(GameObject owner)
{
+ TestSpaceBeam beam = UnityEngine.Object.Instantiate<TestSpaceBeam>(ResourceManager.Instance.Load<TestSpaceBeam>(prefabPath));
+ Vector3 pos3D = owner.GetComponent<TopDownTransform>().position;
+ beam.Set(pos3D + new Vector3(3, 0, 0));
}
} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Managers/BattleManager.cs b/SurvivalTest/Assets/Scripts/Managers/BattleManager.cs
new file mode 100644
index 0000000..102bc34
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/BattleManager.cs
@@ -0,0 +1,17 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BattleManager : Singleton<BattleManager>
+{
+
+ public void Init()
+ {
+ UIManager.Instance.OpenPanel(PanelType.PanelItemBar, null);
+ }
+
+ public void Update()
+ {
+ }
+
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Managers/BattleManager.cs.meta b/SurvivalTest/Assets/Scripts/Managers/BattleManager.cs.meta
new file mode 100644
index 0000000..ce61fdc
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/BattleManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0625fb778ee3237468a8f99fc92c37bd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs b/SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs
new file mode 100644
index 0000000..59593b0
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs
@@ -0,0 +1,35 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public partial class PlayerManager : Singleton<PlayerManager>
+{
+
+ // 角色
+ private CrewScript m_Crew;
+
+ // 持有的装备
+ public List<EquipBase> equips { get { return m_Equips; } }
+ private List<EquipBase> m_Equips = new List<EquipBase>();
+
+ // 持有的饰品
+ public List<DecorationBase> decorations { get { return m_Decorations; } }
+ private List<DecorationBase> m_Decorations = new List<DecorationBase>();
+
+ public void Init()
+ {
+ InitItems();
+
+ }
+
+ public void Update()
+ {
+ UpdateItems();
+ }
+
+ public void SetCrew(CrewScript crew)
+ {
+ m_Crew = crew;
+ }
+
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs.meta b/SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs.meta
new file mode 100644
index 0000000..848ec64
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c2c3da009e0d8114597080ecff2e380c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs
new file mode 100644
index 0000000..ce85849
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+
+public partial class PlayerManager : Singleton<PlayerManager>
+{
+
+
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs.meta b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs.meta
new file mode 100644
index 0000000..3cc2dc3
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Decorations.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6f2b538b1ec21a548b41fe478e5b3bd3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs
new file mode 100644
index 0000000..ce85849
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+
+public partial class PlayerManager : Singleton<PlayerManager>
+{
+
+
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs.meta b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs.meta
new file mode 100644
index 0000000..c43b512
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Equips.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 19dc8d657411e8d47a563a47442d687d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs
new file mode 100644
index 0000000..a0cfe52
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs
@@ -0,0 +1,51 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public partial class PlayerManager : Singleton<PlayerManager>
+{
+ // 持有的物品
+ public List<ItemBase> items { get { return m_Items; } }
+ private List<ItemBase> m_Items = new List<ItemBase>();
+
+ // 当前选中的物品
+ ItemBase m_CurrentItem = null;
+
+ void InitItems()
+ {
+ m_Items.Add(new Item_B2Phone());
+ m_Items.Add(new Item_SpaceBeamer());
+ }
+
+ /// <summary>
+ /// 选中物品
+ /// </summary>
+ public void SetCurrentItem(ItemBase item)
+ {
+ if (!items.Contains(item))
+ {
+ Debug.LogError("No such item");
+ return;
+ }
+ m_CurrentItem = item;
+ }
+
+ /// <summary>
+ /// 使用当前道具
+ /// </summary>
+ public void UseCurrentItem()
+ {
+ if (m_CurrentItem == null)
+ return;
+
+ m_CurrentItem.OnUse(m_Crew.gameObject);
+ }
+
+ void UpdateItems()
+ {
+ for(int i = 0; i < items.Count; ++i)
+ {
+ items[i].Update();
+ }
+ }
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs.meta b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs.meta
new file mode 100644
index 0000000..c0307e5
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Managers/PlayerManager_Items.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2b31f1faa8e2c6a4085213ca15e56220
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Resources/ResourceManager.cs b/SurvivalTest/Assets/Scripts/Resources/ResourceManager.cs
index ddd3225..193d8b3 100644
--- a/SurvivalTest/Assets/Scripts/Resources/ResourceManager.cs
+++ b/SurvivalTest/Assets/Scripts/Resources/ResourceManager.cs
@@ -4,7 +4,7 @@ using UnityEngine;
public class ResourceManager : Singleton<ResourceManager>
{
- T Load<T>(string path) where T : UnityEngine.Object
+ public T Load<T>(string path) where T : UnityEngine.Object
{
return Resources.Load<T>(path);
}
diff --git a/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs b/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs
index 2a7af2f..033f198 100644
--- a/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs
+++ b/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
-public class TestPeaceMaker : MonoBehaviour
+public class TestPeaceMaker : CrewScript
{
[SerializeField] private Transform m_Camera;
@@ -16,8 +16,6 @@ public class TestPeaceMaker : MonoBehaviour
[SerializeField] private Vector2 m_Zoom;
[SerializeField] private GameObject m_LaunchVfx;
[SerializeField] private Transform m_LaunchPoint;
- [SerializeField] private TestB2 m_B2;
- [SerializeField] private TestSpaceBeam m_SpaceBeam;
private Vector3 zoomIn
{
@@ -56,6 +54,11 @@ public class TestPeaceMaker : MonoBehaviour
}
private ControlMode m_ControlMode;
+ private void Awake()
+ {
+ PlayerManager.Instance.SetCrew(this);
+ }
+
void Start()
{
m_SpriteRenderer = GetComponent<SpriteRenderer>();
@@ -77,9 +80,6 @@ public class TestPeaceMaker : MonoBehaviour
bool isFire = Fire();
bool isGrenade = LaunchGrenade();
- bool isBeam = SpaceBeam();
-
- CallB2();
CameraFollow();
@@ -290,30 +290,4 @@ public class TestPeaceMaker : MonoBehaviour
}
}
- void CallB2()
- {
- if(Input.GetButtonDown("Fire3"))
- {
- TestB2 b2 = Instantiate<TestB2>(m_B2);
-
- Vector3 pos3D = m_Coord.GetProjectedPosition();
- b2.Set(pos3D + new Vector3(-15, 0,0 ), pos3D + new Vector3(15, 0,0 ), 20f, 3f);
- }
- }
-
- bool SpaceBeam()
- {
- if (Input.GetButtonDown("SpaceBeam"))
- {
- TestSpaceBeam beam = Instantiate<TestSpaceBeam>(m_SpaceBeam);
-
- Vector3 pos3D = m_Coord.position;
- beam.Set(pos3D + new Vector3(3, 0, 0));
-
- TinyCountDown.Instance.Set("SpaceBeam", 0.1f);
- return true;
- }
- return TinyCountDown.Instance.Get("SpaceBeam") > 0;
- }
-
}
diff --git a/SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs b/SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs
new file mode 100644
index 0000000..8e5ff24
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public abstract class UIGridItemBase : MonoBehaviour
+{
+
+ public abstract void Set(object param);
+
+}
diff --git a/SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs.meta b/SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs.meta
new file mode 100644
index 0000000..a3f1f69
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/Common/UIGridItemBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9e490364ec1d9c8419f9bece4e2ab365
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/UI/Panel/PanelBase.cs b/SurvivalTest/Assets/Scripts/UI/Panel/PanelBase.cs
index 3081d97..9d1157c 100644
--- a/SurvivalTest/Assets/Scripts/UI/Panel/PanelBase.cs
+++ b/SurvivalTest/Assets/Scripts/UI/Panel/PanelBase.cs
@@ -2,26 +2,41 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+[ExecuteInEditMode]
[DisallowMultipleComponent]
-public class PanelBase : MonoBehaviour
+public abstract class PanelBase : MonoBehaviour
{
- public virtual void Set(object param)
+ public abstract void Set(object param);
+
+ public virtual void OnEnable()
{
+ InitRectTransform();
}
- void Start()
- {
-
- }
+ public void InitRectTransform()
+ {
+ RectTransform rect = gameObject.GetComponent<RectTransform>();
+ rect.anchorMin = new Vector2(0, 0);
+ rect.anchorMax = new Vector2(1, 1);
+
+ rect.localScale = new Vector3(1, 1, 1);
+
+ rect.anchoredPosition3D = Vector3.zero;
+
+ rect.offsetMin = new Vector2(0, 0);
+ rect.offsetMax = new Vector2(0, 0);
- protected virtual void Update()
- {
- }
+ rect.pivot = new Vector2(0.5f, 0.5f);
+ }
+
+ protected virtual void Update()
+ {
+ }
protected virtual void OnSecondUpdate()
{
}
-}
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/UI/Panel/PanelEquipBar.cs b/SurvivalTest/Assets/Scripts/UI/Panel/PanelEquipBar.cs
index 61f99e5..dbec362 100644
--- a/SurvivalTest/Assets/Scripts/UI/Panel/PanelEquipBar.cs
+++ b/SurvivalTest/Assets/Scripts/UI/Panel/PanelEquipBar.cs
@@ -2,17 +2,9 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
-public class PanelEquipBar : MonoBehaviour
+public class PanelEquipBar : PanelBase
{
- // Start is called before the first frame update
- void Start()
- {
-
- }
-
- // Update is called once per frame
- void Update()
- {
-
- }
+ public override void Set(object param)
+ {
+ }
}
diff --git a/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/ItemWidget.cs b/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/ItemWidget.cs
index 55898f2..552672a 100644
--- a/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/ItemWidget.cs
+++ b/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/ItemWidget.cs
@@ -1,9 +1,123 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.UI;
-public class ItemWidget : MonoBehaviour
+public struct ItemWidgetParam
{
-
+ // 主动点击
+ public System.Action<ItemWidget> onSelected;
+ public ItemBase item;
+}
+
+public class ItemWidget : UIGridItemBase
+{
+ public Image Image_Icon;
+ public Image Image_SelectBg;
+
+ public Image Image_Use;
+
+ private System.Action<ItemWidget> onSelected;
+
+ public ItemBase item { get { return m_Item; } }
+ private ItemBase m_Item;
+
+ private Coroutine m_CoUse;
+
+ private int m_PendingUse = 0;
+
+ public void SetSelectBg(bool selected)
+ {
+ Image_SelectBg.gameObject.SetActive(selected);
+ }
+
+ public override void Set(object param)
+ {
+ ItemWidgetParam info = (ItemWidgetParam)param;
+ onSelected = info.onSelected;
+ m_Item = info.item;
+
+ Image_Icon.sprite = ResourceManager.Instance.Load<Sprite>(info.item.iconPath);
+
+ SetSelectBg(false);
+
+ Image_Use.gameObject.SetActive(false);
+ }
+
+ public void OnSelectCallback()
+ {
+ SetSelectBg(true);
+ }
+
+ public void OnDeselectCallback()
+ {
+ SetSelectBg(false);
+ }
+
+ public void OnUseCallback()
+ {
+ m_PendingUse++;
+ PlayUseAnimation();
+ }
+
+ private void PlayUseAnimation()
+ {
+ if (m_CoUse != null)
+ return;
+ Image_Use.gameObject.SetActive(true);
+ m_CoUse = StartCoroutine(CoUseAnimation());
+ }
+
+ IEnumerator CoUseAnimation()
+ {
+ float speed = 5f;
+
+ while(m_PendingUse > 0)
+ {
+ Image_Use.fillOrigin = (int)Image.OriginVertical.Bottom;
+ float t = 0;
+ while (true)
+ {
+ t += speed * Time.deltaTime;
+
+ if (t > 1)
+ break;
+
+ Image_Use.fillAmount = Mathf.Lerp(0, 1, t);
+
+ yield return null;
+ }
+
+ Image_Use.fillOrigin = (int)Image.OriginVertical.Top;
+ t = 0;
+ while (true)
+ {
+ t += speed * Time.deltaTime;
+
+ if (t > 1)
+ break;
+
+ Image_Use.fillAmount = Mathf.Lerp(1, 0, t);
+
+ yield return null;
+ }
+ m_PendingUse--;
+ }
+
+ Image_Use.gameObject.SetActive(false);
+
+ m_CoUse = null;
+
+ yield break;
+ }
+
+ private void StopUseAnimation()
+ {
+ if (m_CoUse != null)
+ {
+ StopCoroutine(m_CoUse);
+ }
+ Image_Use.gameObject.SetActive(false);
+ }
}
diff --git a/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/PanelItemBar.cs b/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/PanelItemBar.cs
index 00acafc..74f90c3 100644
--- a/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/PanelItemBar.cs
+++ b/SurvivalTest/Assets/Scripts/UI/Panel/PanelItemBar/PanelItemBar.cs
@@ -1,13 +1,31 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.UI;
public class PanelItemBar : PanelBase
{
- /// <summary>
- /// 当前持有的Items
- /// </summary>
- public List<ItemWidget> m_Items = new List<ItemWidget>();
+ public ItemWidget m_ItemTempalte;
+
+ public UISimpleGrid m_ItemGrid;
+
+ public Text m_TextName;
+
+ // 当前持有的Items
+ private List<ItemWidget> m_Items = new List<ItemWidget>();
+
+ private int m_CurrentIndex = 0;
+
+ public override void Set(object param)
+ {
+ for(int i = 0; i < PlayerManager.Instance.items.Count; ++i)
+ {
+ ItemWidget widget = MakeItemWidget(PlayerManager.Instance.items[i]);
+ m_Items.Add(widget);
+ }
+
+ SelectItemWidget(0);
+ }
bool SwitchToLeft()
{
@@ -19,14 +37,58 @@ public class PanelItemBar : PanelBase
return Input.GetButtonDown("RightItem");
}
+ bool UseItem()
+ {
+ return Input.GetButtonDown("Fire3");
+ }
+
+ ItemWidget MakeItemWidget(ItemBase item)
+ {
+ ItemWidget widget = Instantiate<ItemWidget>(m_ItemTempalte);
+ widget.transform.SetParent(m_ItemGrid.transform);
+ widget.gameObject.SetActive(true);
+ widget.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0);
+
+ ItemWidgetParam param = new ItemWidgetParam();
+ //param.onSelected = OnSelectItemWidget;
+ param.item = item;
+ widget.Set(param);
+ return widget;
+ }
+
protected override void Update()
{
if (SwitchToLeft())
{
+ int newIndex = Mathf.Clamp(m_CurrentIndex - 1, 0, m_Items.Count - 1);
+ SelectItemWidget(newIndex);
}
if (SwitchToRight())
{
+ int newIndex = Mathf.Clamp(m_CurrentIndex + 1, 0, m_Items.Count - 1);
+ SelectItemWidget(newIndex);
}
+ if (UseItem())
+ {
+ m_Items[m_CurrentIndex].OnUseCallback();
+ PlayerManager.Instance.UseCurrentItem();
+ }
+ }
+
+ void SelectItemWidget(int index)
+ {
+ if(index < 0 || index > m_Items.Count - 1)
+ {
+ return ;
+ }
+ m_Items[m_CurrentIndex].OnDeselectCallback();
+ m_Items[index].OnSelectCallback();
+
+ m_TextName.text = m_Items[index].item.name;
+
+ m_CurrentIndex = index;
+
+ PlayerManager.Instance.SetCurrentItem(m_Items[index].item);
}
}
diff --git a/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs b/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs
index 049f733..d29c24a 100644
--- a/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs
+++ b/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs
@@ -1,18 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.UI;
public enum PanelType
{
- None,
+ None,
- PanelLevelBar,
+ PanelLevelBar,
PanelItemBar,
}
public partial class UIManager : Singleton<UIManager>
{
private Dictionary<PanelType, string> m_Panels = new Dictionary<PanelType, string>();
+ private Dictionary<PanelType, PanelBase> m_OpenedPanels = new Dictionary<PanelType, PanelBase>();
+
+ private Canvas m_Canvas;
+
+ public void SetRootCanvas(Canvas canvas)
+ {
+ m_Canvas = canvas;
+ }
void SetPanels()
{
@@ -25,9 +34,27 @@ public partial class UIManager : Singleton<UIManager>
m_Panels.Add(type, "prefabs/ui/" + path);
}
- void OpenPanel(PanelType type, object param)
+ public PanelBase OpenPanel(PanelType type, object param = null)
{
-
+ if(m_OpenedPanels.ContainsKey(type))
+ {
+ return m_OpenedPanels[type];
+ }
+
+ PanelBase prefab = ResourceManager.Instance.Load<PanelBase>(m_Panels[type]);
+ if (prefab == null)
+ {
+ Debug.LogError("UI Prefab in not available, path=" + m_Panels[type]);
+ return null;
+ }
+ PanelBase panel = UnityEngine.Object.Instantiate<PanelBase>(prefab);
+ panel.name = prefab.name;
+ panel.transform.SetParent(m_Canvas.transform);
+ panel.Set(param);
+ panel.InitRectTransform();
+ panel.gameObject.SetActive(true);
+
+ return panel;
}
-}
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs b/SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs
new file mode 100644
index 0000000..541d21a
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs
@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UIRootCanvas : MonoBehaviour
+{
+
+ private void Awake()
+ {
+ UIManager.Instance.SetRootCanvas(gameObject.GetComponent<Canvas>());
+ }
+
+}
diff --git a/SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs.meta b/SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs.meta
new file mode 100644
index 0000000..5423e4e
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/UIRootCanvas.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 097b021f29d7fc8468055a35bbc92ca8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/UI/Widget.meta b/SurvivalTest/Assets/Scripts/UI/Widgets.meta
index c0a26ea..c0a26ea 100644
--- a/SurvivalTest/Assets/Scripts/UI/Widget.meta
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets.meta
diff --git a/SurvivalTest/Assets/Scripts/UI/Widget/UIButton.cs b/SurvivalTest/Assets/Scripts/UI/Widgets/UIButton.cs
index 616b69d..616b69d 100644
--- a/SurvivalTest/Assets/Scripts/UI/Widget/UIButton.cs
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets/UIButton.cs
diff --git a/SurvivalTest/Assets/Scripts/UI/Widget/UIButton.cs.meta b/SurvivalTest/Assets/Scripts/UI/Widgets/UIButton.cs.meta
index 41e16d0..41e16d0 100644
--- a/SurvivalTest/Assets/Scripts/UI/Widget/UIButton.cs.meta
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets/UIButton.cs.meta
diff --git a/SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs b/SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs
new file mode 100644
index 0000000..5eeee61
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UIGrid : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs.meta b/SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs.meta
new file mode 100644
index 0000000..c3570c0
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets/UIGrid.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e0cbe5d6d2aaef54dba4bb837871787f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs b/SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs
new file mode 100644
index 0000000..a4e480a
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs
@@ -0,0 +1,22 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 简易Grid
+/// </summary>
+public class UISimpleGrid : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs.meta b/SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs.meta
new file mode 100644
index 0000000..e071d58
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/UI/Widgets/UISimpleGrid.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4dbae61f498dde342a95489aca8ff68c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs b/SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs
new file mode 100644
index 0000000..6532317
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs
@@ -0,0 +1,8 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class CrewScript : MonoBehaviour
+{
+
+}
diff --git a/SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs.meta b/SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs.meta
new file mode 100644
index 0000000..0e1ebed
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Unit/Crew/CrewScript.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9601f63e791a9974fbc9cd04c352b442
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: