主页与Task任务处理
This commit is contained in:
178
Assets/TcgEngine/Prefabs/UI/Task/RewardItem.prefab
Normal file
178
Assets/TcgEngine/Prefabs/UI/Task/RewardItem.prefab
Normal file
@@ -0,0 +1,178 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3773603359716521685
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5844164435676398261}
|
||||
- component: {fileID: 6774589803606362231}
|
||||
- component: {fileID: 4748133634100025909}
|
||||
- component: {fileID: 8170459783435472423}
|
||||
m_Layer: 5
|
||||
m_Name: RewardItem
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &5844164435676398261
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3773603359716521685}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 2013309795088359583}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 56, y: 56}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6774589803606362231
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3773603359716521685}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4748133634100025909
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3773603359716521685}
|
||||
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: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: bf707d878df66f9439ba474fb8d9ef55, type: 3}
|
||||
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!114 &8170459783435472423
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3773603359716521685}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 55af7dcd22f203d43b3ff26368c1ef5b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
database: {fileID: 11400000, guid: d87b140f0a18c5b42b9cfa74e5448e95, type: 2}
|
||||
rewardType: 0
|
||||
prizeAmount: 0
|
||||
rewardIcon: {fileID: 4748133634100025909}
|
||||
amountText: {fileID: 4199357195424995409}
|
||||
fixedHeight: 56
|
||||
--- !u!1 &6776010374572791816
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2013309795088359583}
|
||||
- component: {fileID: 6943656237734908692}
|
||||
- component: {fileID: 4199357195424995409}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2013309795088359583
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6776010374572791816}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5844164435676398261}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -28, y: 15}
|
||||
m_SizeDelta: {x: 56, y: 30}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6943656237734908692
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6776010374572791816}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4199357195424995409
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6776010374572791816}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 16
|
||||
m_FontStyle: 1
|
||||
m_BestFit: 0
|
||||
m_MinSize: 0
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 8
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 100
|
||||
7
Assets/TcgEngine/Prefabs/UI/Task/RewardItem.prefab.meta
Normal file
7
Assets/TcgEngine/Prefabs/UI/Task/RewardItem.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29d0d9614b5b8f542aff9d019ec8ce8d
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -17,7 +17,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &284419844733056354
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -158,8 +158,8 @@ RectTransform:
|
||||
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: 23.84, y: 46.900017}
|
||||
m_SizeDelta: {x: 153.18, y: 35.6}
|
||||
m_AnchoredPosition: {x: 23.84, y: 39.894127}
|
||||
m_SizeDelta: {x: 153.18, y: 49.6118}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5317638606691184681
|
||||
CanvasRenderer:
|
||||
@@ -191,18 +191,18 @@ MonoBehaviour:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 22
|
||||
m_FontSize: 20
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 3
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: "\u6D88\u706D\u6240\u6709\u654C\u4EBA"
|
||||
m_Text: "\u53EC\u552410\u4E2A\u738B\u56FD\u519B\u6216\u81EA\u7531\u4EBA\u82F1\u96C4"
|
||||
--- !u!1 &5317638606723811022
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -240,7 +240,7 @@ RectTransform:
|
||||
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: 13.24, y: 16.9}
|
||||
m_AnchoredPosition: {x: 13.24, y: 6.3}
|
||||
m_SizeDelta: {x: 127.33, y: 12.6}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &5317638606723811020
|
||||
@@ -468,7 +468,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &5317638607177714484
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -950,8 +950,9 @@ MonoBehaviour:
|
||||
progressBar_slider: {fileID: 5317638606723811020}
|
||||
progressBar_text: {fileID: 5317638606810153107}
|
||||
reward_button: {fileID: 4730874702436785540}
|
||||
reward_icon: {fileID: 5317638608707530455}
|
||||
taskEnd_img: {fileID: 6541735992704929191}
|
||||
rewardItem: {fileID: 3773603359716521685, guid: 29d0d9614b5b8f542aff9d019ec8ce8d,
|
||||
type: 3}
|
||||
--- !u!225 &5368359024977481613
|
||||
CanvasGroup:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -976,6 +977,7 @@ GameObject:
|
||||
- component: {fileID: 5317638608707530452}
|
||||
- component: {fileID: 5317638608707530455}
|
||||
- component: {fileID: 4730874702436785540}
|
||||
- component: {fileID: 1766748350975125263}
|
||||
m_Layer: 5
|
||||
m_Name: Reward
|
||||
m_TagString: Untagged
|
||||
@@ -1000,8 +1002,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
m_AnchoredPosition: {x: 3.1375, y: -112.3}
|
||||
m_SizeDelta: {x: 69.7, y: 69.7}
|
||||
m_AnchoredPosition: {x: 3.1375, y: -118}
|
||||
m_SizeDelta: {x: 162.8714, y: 69.7}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5317638608707530452
|
||||
CanvasRenderer:
|
||||
@@ -1024,7 +1026,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -1085,6 +1087,32 @@ MonoBehaviour:
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!114 &1766748350975125263
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5317638608707530441}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 4
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &6862293603468694699
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
8
Assets/TcgEngine/Resources/TaskReward.meta
Normal file
8
Assets/TcgEngine/Resources/TaskReward.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c78997bb3ac4c4440a7d4efefec17f69
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
19
Assets/TcgEngine/Resources/TaskReward/TaskReward.asset
Normal file
19
Assets/TcgEngine/Resources/TaskReward/TaskReward.asset
Normal file
@@ -0,0 +1,19 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3b5b19a5996046508584e1eb649f43dd, type: 3}
|
||||
m_Name: TaskReward
|
||||
m_EditorClassIdentifier:
|
||||
entries:
|
||||
- type: 0
|
||||
icon: {fileID: 21300000, guid: bf707d878df66f9439ba474fb8d9ef55, type: 3}
|
||||
- type: 1
|
||||
icon: {fileID: 21300000, guid: 9f88fcf9a8fd4114ba8a71a53024535b, type: 3}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d87b140f0a18c5b42b9cfa74e5448e95
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -57205,7 +57205,6 @@ MonoBehaviour:
|
||||
ladderRank: {fileID: 360370754}
|
||||
lines: []
|
||||
ladderLines: []
|
||||
returnToHome_button: {fileID: 1260207039}
|
||||
hideGameObject:
|
||||
- {fileID: 1674082196}
|
||||
- {fileID: 0}
|
||||
@@ -57219,7 +57218,7 @@ CanvasGroup:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4526323995250171124}
|
||||
m_Enabled: 1
|
||||
m_Alpha: 0
|
||||
m_Alpha: 1
|
||||
m_Interactable: 1
|
||||
m_BlocksRaycasts: 1
|
||||
m_IgnoreParentGroups: 0
|
||||
|
||||
@@ -241,7 +241,7 @@ namespace TcgEngine
|
||||
if (res.success)
|
||||
{
|
||||
udata = ApiTool.JsonToObject<UserData>(res.data);
|
||||
Debug.Log($"获取玩家数据:{res.data}");
|
||||
// Debug.Log($"获取玩家数据:{res.data}");
|
||||
}
|
||||
|
||||
return udata;
|
||||
|
||||
@@ -94,7 +94,8 @@ namespace TcgEngine
|
||||
|
||||
public enum TaskRewardType
|
||||
{
|
||||
Coins = 0, // 金币
|
||||
Coins = 0, // 金币
|
||||
Crystal = 1,
|
||||
// 后续可扩展其他奖励类型
|
||||
}
|
||||
|
||||
|
||||
44
Assets/TcgEngine/Scripts/Data/TaskRewardData.cs
Normal file
44
Assets/TcgEngine/Scripts/Data/TaskRewardData.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using TcgEngine.UI;
|
||||
|
||||
namespace TcgEngine
|
||||
{
|
||||
|
||||
[System.Serializable]
|
||||
public class PrizeIconEntry
|
||||
{
|
||||
public TaskRewardType type;
|
||||
public Sprite icon;
|
||||
}
|
||||
|
||||
[CreateAssetMenu(fileName = "NewTaskRewardData", menuName = "TcgEngine/TaskRewardData")]
|
||||
public class TaskRewardData : ScriptableObject
|
||||
{
|
||||
public PrizeIconEntry[] entries;
|
||||
|
||||
private Dictionary<TaskRewardType, Sprite> iconDict = new Dictionary<TaskRewardType, Sprite>();
|
||||
|
||||
public void Init()
|
||||
{
|
||||
iconDict.Clear();
|
||||
foreach (var entry in entries)
|
||||
{
|
||||
Debug.Log($"录入: {entry.type} => {entry.icon?.name}");
|
||||
iconDict[entry.type] = entry.icon;
|
||||
}
|
||||
}
|
||||
|
||||
public Sprite GetIcon(TaskRewardType type)
|
||||
{
|
||||
if (iconDict.Count == 0) Init();
|
||||
|
||||
if (iconDict.TryGetValue(type, out Sprite sprite))
|
||||
return sprite;
|
||||
|
||||
Debug.LogWarning($"未找到 {type} 的图标,请检查 TaskRewardData 的 entries 配置");
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
3
Assets/TcgEngine/Scripts/Data/TaskRewardData.cs.meta
Normal file
3
Assets/TcgEngine/Scripts/Data/TaskRewardData.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b5b19a5996046508584e1eb649f43dd
|
||||
timeCreated: 1757580421
|
||||
@@ -422,31 +422,37 @@ namespace TcgEngine.Gameplay
|
||||
}
|
||||
|
||||
task.status = TaskStatus.Claimed;
|
||||
|
||||
SavePlayerData();
|
||||
return true;
|
||||
}
|
||||
|
||||
private void GiveReward(TaskRewardType rewardType, int amount)
|
||||
{
|
||||
UserData userData = Authenticator.Get().UserData;
|
||||
// 根据奖励类型发放奖励
|
||||
switch (rewardType)
|
||||
{
|
||||
case TaskRewardType.Coins:
|
||||
// 增加金币(需要与游戏现有金币系统集成)
|
||||
UserData userData = Authenticator.Get().UserData;
|
||||
|
||||
if (userData != null)
|
||||
{
|
||||
userData.coins += amount;
|
||||
Debug.Log($"Gave {amount} coins as reward");
|
||||
|
||||
// 保存用户数据更新
|
||||
if (ApiClient.Get() != null && ApiClient.Get().IsLoggedIn())
|
||||
{
|
||||
Authenticator.Get().SaveUserData();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TaskRewardType.Crystal:
|
||||
if (userData != null)
|
||||
{
|
||||
userData.crystal += amount;
|
||||
Debug.Log($"获取{amount}个钻石");
|
||||
}
|
||||
break;
|
||||
}
|
||||
// 保存用户数据更新
|
||||
if (ApiClient.Get() != null && ApiClient.Get().IsLoggedIn())
|
||||
{
|
||||
Authenticator.Get().SaveUserData();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,9 +37,6 @@ namespace TcgEngine.UI
|
||||
|
||||
public List<RankLine> lines = new List<RankLine>();
|
||||
public List<LadderRankLine> ladderLines = new List<LadderRankLine>();
|
||||
|
||||
[Header("返回主页")]
|
||||
public Button returnToHome_button;
|
||||
|
||||
private const string DefaultAvatarId = "bear";
|
||||
|
||||
@@ -59,28 +56,6 @@ namespace TcgEngine.UI
|
||||
my_line.onClick += OnClickLine;
|
||||
my_ladderLine.onClick += OnClickRankLine;
|
||||
InitLines();
|
||||
|
||||
returnToHome_button.onClick.AddListener(OnReturnToHome);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回主页
|
||||
/// </summary>
|
||||
public void OnReturnToHome()
|
||||
{
|
||||
isHideObject = !isHideObject;
|
||||
if (isHideObject)
|
||||
{
|
||||
Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
Hide();
|
||||
}
|
||||
foreach (var obj in hideGameObject)
|
||||
{
|
||||
obj.SetActive(!isHideObject);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
@@ -257,7 +232,7 @@ namespace TcgEngine.UI
|
||||
}
|
||||
|
||||
}
|
||||
//
|
||||
|
||||
// private void RankPanelColl()
|
||||
// {
|
||||
// if (isLadderRank)
|
||||
|
||||
29
Assets/TcgEngine/Scripts/Menu/UIFrame.cs
Normal file
29
Assets/TcgEngine/Scripts/Menu/UIFrame.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace TcgEngine.UI
|
||||
{
|
||||
public class UIFrame : UIPanel
|
||||
{
|
||||
public Button uiFrameHideButton;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
Hide();
|
||||
}
|
||||
|
||||
protected override void Start()
|
||||
{
|
||||
uiFrameHideButton.onClick.AddListener(OnUiFrameHide);
|
||||
}
|
||||
|
||||
private void OnUiFrameHide()
|
||||
{
|
||||
Hide();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
11
Assets/TcgEngine/Scripts/Menu/UIFrame.cs.meta
Normal file
11
Assets/TcgEngine/Scripts/Menu/UIFrame.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9379c33c33779f64a94d441f6a521411
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -17,13 +17,13 @@ namespace TcgEngine.UI
|
||||
public Text progressBar_text;
|
||||
|
||||
public Button reward_button;
|
||||
public Image reward_icon;
|
||||
|
||||
public Image taskEnd_img;
|
||||
|
||||
private PlayerTask playerTask;
|
||||
private TaskData taskConfig;
|
||||
|
||||
public GameObject rewardItem;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
@@ -50,12 +50,25 @@ namespace TcgEngine.UI
|
||||
reward_button.interactable = task.status == TaskStatus.Completed;
|
||||
reward_button.onClick.RemoveAllListeners();
|
||||
reward_button.onClick.AddListener(OnClickReward);
|
||||
|
||||
// 奖品
|
||||
for (int i = 0; i < config.rewardTypes.Length; i++)
|
||||
{
|
||||
TaskRewardType rewardType = config.rewardTypes[i];
|
||||
int rewardNum = (config.rewardNums != null && i < config.rewardNums.Length)
|
||||
? config.rewardNums[i] : 1; // 没配数量就默认为1
|
||||
|
||||
GameObject go = Instantiate(rewardItem, reward_button.transform);
|
||||
var reward = go.GetComponent<TaskReward>();
|
||||
reward.SetPrize(rewardType, rewardNum, reward_button.interactable); // 改成传两个参数
|
||||
}
|
||||
|
||||
if (task.status == TaskStatus.Expired || task.status == TaskStatus.Claimed)
|
||||
{
|
||||
taskEnd_img.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
RefreshStatus();
|
||||
|
||||
}
|
||||
@@ -74,13 +87,5 @@ namespace TcgEngine.UI
|
||||
progressBar_slider.value = playerTask.progress;
|
||||
progressBar_text.text = playerTask.progress + "/" + taskConfig.value1;
|
||||
}
|
||||
|
||||
private void RewardColl(Sprite icon)
|
||||
{
|
||||
if (reward_icon != null)
|
||||
{
|
||||
reward_icon.sprite = icon;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
52
Assets/TcgEngine/Scripts/Tasks/TaskReward.cs
Normal file
52
Assets/TcgEngine/Scripts/Tasks/TaskReward.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace TcgEngine.UI
|
||||
{
|
||||
public class TaskReward : MonoBehaviour
|
||||
{
|
||||
public TaskRewardData database; // 存放所有奖励图标的 ScriptableObject
|
||||
|
||||
public Image rewardIcon; // 图标 Image
|
||||
public Text amountText; // 数量文本
|
||||
public float fixedHeight = 80f; // 固定高度
|
||||
|
||||
private RectTransform rect;
|
||||
|
||||
public void SetPrize(TaskRewardType type, int amount,bool isVis)
|
||||
{
|
||||
if (!isVis)
|
||||
{
|
||||
rewardIcon.color = Color.gray;
|
||||
amountText.color = Color.gray;
|
||||
}
|
||||
else
|
||||
{
|
||||
rewardIcon.color = Color.white;
|
||||
amountText.color = Color.white;
|
||||
}
|
||||
|
||||
|
||||
// 图标
|
||||
Sprite sprite = database.GetIcon(type);
|
||||
rewardIcon.sprite = sprite;
|
||||
|
||||
// 数量
|
||||
if (amountText != null)
|
||||
{
|
||||
amountText.text = amount > 1 ? "x" + amount.ToString() : "";
|
||||
}
|
||||
|
||||
// 高度固定80,等比例缩放
|
||||
if (sprite != null)
|
||||
{
|
||||
float ratio = sprite.rect.width / sprite.rect.height;
|
||||
|
||||
rect = rewardIcon.GetComponent<RectTransform>();
|
||||
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, fixedHeight);
|
||||
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, fixedHeight * ratio);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/TcgEngine/Scripts/Tasks/TaskReward.cs.meta
Normal file
11
Assets/TcgEngine/Scripts/Tasks/TaskReward.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 55af7dcd22f203d43b3ff26368c1ef5b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/TcgEngine/Sprites/GlobalButton/global_Leaderboard.png
Normal file
BIN
Assets/TcgEngine/Sprites/GlobalButton/global_Leaderboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
@@ -0,0 +1,135 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b08e38b67a99d041856ff178ebd6758
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user