主页与Task任务处理

This commit is contained in:
YiHan0621
2025-09-12 11:39:17 +08:00
parent 2151631c59
commit 8506590b12
20 changed files with 579 additions and 60 deletions

View 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

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 29d0d9614b5b8f542aff9d019ec8ce8d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -17,7 +17,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &284419844733056354 --- !u!224 &284419844733056354
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -158,8 +158,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 23.84, y: 46.900017} m_AnchoredPosition: {x: 23.84, y: 39.894127}
m_SizeDelta: {x: 153.18, y: 35.6} m_SizeDelta: {x: 153.18, y: 49.6118}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5317638606691184681 --- !u!222 &5317638606691184681
CanvasRenderer: CanvasRenderer:
@@ -191,18 +191,18 @@ MonoBehaviour:
m_Calls: [] m_Calls: []
m_FontData: m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 22 m_FontSize: 20
m_FontStyle: 0 m_FontStyle: 0
m_BestFit: 0 m_BestFit: 0
m_MinSize: 2 m_MinSize: 2
m_MaxSize: 40 m_MaxSize: 40
m_Alignment: 3 m_Alignment: 0
m_AlignByGeometry: 0 m_AlignByGeometry: 0
m_RichText: 1 m_RichText: 1
m_HorizontalOverflow: 0 m_HorizontalOverflow: 0
m_VerticalOverflow: 0 m_VerticalOverflow: 0
m_LineSpacing: 1 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 --- !u!1 &5317638606723811022
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -240,7 +240,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {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_SizeDelta: {x: 127.33, y: 12.6}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5317638606723811020 --- !u!114 &5317638606723811020
@@ -468,7 +468,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &5317638607177714484 --- !u!224 &5317638607177714484
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -950,8 +950,9 @@ MonoBehaviour:
progressBar_slider: {fileID: 5317638606723811020} progressBar_slider: {fileID: 5317638606723811020}
progressBar_text: {fileID: 5317638606810153107} progressBar_text: {fileID: 5317638606810153107}
reward_button: {fileID: 4730874702436785540} reward_button: {fileID: 4730874702436785540}
reward_icon: {fileID: 5317638608707530455}
taskEnd_img: {fileID: 6541735992704929191} taskEnd_img: {fileID: 6541735992704929191}
rewardItem: {fileID: 3773603359716521685, guid: 29d0d9614b5b8f542aff9d019ec8ce8d,
type: 3}
--- !u!225 &5368359024977481613 --- !u!225 &5368359024977481613
CanvasGroup: CanvasGroup:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -976,6 +977,7 @@ GameObject:
- component: {fileID: 5317638608707530452} - component: {fileID: 5317638608707530452}
- component: {fileID: 5317638608707530455} - component: {fileID: 5317638608707530455}
- component: {fileID: 4730874702436785540} - component: {fileID: 4730874702436785540}
- component: {fileID: 1766748350975125263}
m_Layer: 5 m_Layer: 5
m_Name: Reward m_Name: Reward
m_TagString: Untagged m_TagString: Untagged
@@ -1000,8 +1002,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 3.1375, y: -112.3} m_AnchoredPosition: {x: 3.1375, y: -118}
m_SizeDelta: {x: 69.7, y: 69.7} m_SizeDelta: {x: 162.8714, y: 69.7}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5317638608707530452 --- !u!222 &5317638608707530452
CanvasRenderer: CanvasRenderer:
@@ -1024,7 +1026,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Material: {fileID: 0} 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_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1 m_Maskable: 1
@@ -1085,6 +1087,32 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] 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 --- !u!1 &6862293603468694699
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c78997bb3ac4c4440a7d4efefec17f69
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View 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}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d87b140f0a18c5b42b9cfa74e5448e95
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -57205,7 +57205,6 @@ MonoBehaviour:
ladderRank: {fileID: 360370754} ladderRank: {fileID: 360370754}
lines: [] lines: []
ladderLines: [] ladderLines: []
returnToHome_button: {fileID: 1260207039}
hideGameObject: hideGameObject:
- {fileID: 1674082196} - {fileID: 1674082196}
- {fileID: 0} - {fileID: 0}
@@ -57219,7 +57218,7 @@ CanvasGroup:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4526323995250171124} m_GameObject: {fileID: 4526323995250171124}
m_Enabled: 1 m_Enabled: 1
m_Alpha: 0 m_Alpha: 1
m_Interactable: 1 m_Interactable: 1
m_BlocksRaycasts: 1 m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0 m_IgnoreParentGroups: 0

View File

@@ -241,7 +241,7 @@ namespace TcgEngine
if (res.success) if (res.success)
{ {
udata = ApiTool.JsonToObject<UserData>(res.data); udata = ApiTool.JsonToObject<UserData>(res.data);
Debug.Log($"获取玩家数据:{res.data}"); // Debug.Log($"获取玩家数据:{res.data}");
} }
return udata; return udata;

View File

@@ -94,7 +94,8 @@ namespace TcgEngine
public enum TaskRewardType public enum TaskRewardType
{ {
Coins = 0, // 金币 Coins = 0, // 金币
Crystal = 1,
// 后续可扩展其他奖励类型 // 后续可扩展其他奖励类型
} }

View 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;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3b5b19a5996046508584e1eb649f43dd
timeCreated: 1757580421

View File

@@ -422,31 +422,37 @@ namespace TcgEngine.Gameplay
} }
task.status = TaskStatus.Claimed; task.status = TaskStatus.Claimed;
SavePlayerData(); SavePlayerData();
return true; return true;
} }
private void GiveReward(TaskRewardType rewardType, int amount) private void GiveReward(TaskRewardType rewardType, int amount)
{ {
UserData userData = Authenticator.Get().UserData;
// 根据奖励类型发放奖励 // 根据奖励类型发放奖励
switch (rewardType) switch (rewardType)
{ {
case TaskRewardType.Coins: case TaskRewardType.Coins:
// 增加金币(需要与游戏现有金币系统集成) // 增加金币(需要与游戏现有金币系统集成)
UserData userData = Authenticator.Get().UserData;
if (userData != null) if (userData != null)
{ {
userData.coins += amount; userData.coins += amount;
Debug.Log($"Gave {amount} coins as reward"); Debug.Log($"Gave {amount} coins as reward");
// 保存用户数据更新
if (ApiClient.Get() != null && ApiClient.Get().IsLoggedIn())
{
Authenticator.Get().SaveUserData();
}
} }
break; break;
case TaskRewardType.Crystal:
if (userData != null)
{
userData.crystal += amount;
Debug.Log($"获取{amount}个钻石");
}
break;
}
// 保存用户数据更新
if (ApiClient.Get() != null && ApiClient.Get().IsLoggedIn())
{
Authenticator.Get().SaveUserData();
} }
} }

View File

@@ -38,9 +38,6 @@ namespace TcgEngine.UI
public List<RankLine> lines = new List<RankLine>(); public List<RankLine> lines = new List<RankLine>();
public List<LadderRankLine> ladderLines = new List<LadderRankLine>(); public List<LadderRankLine> ladderLines = new List<LadderRankLine>();
[Header("返回主页")]
public Button returnToHome_button;
private const string DefaultAvatarId = "bear"; private const string DefaultAvatarId = "bear";
private static LeaderboardPanel instance; private static LeaderboardPanel instance;
@@ -59,28 +56,6 @@ namespace TcgEngine.UI
my_line.onClick += OnClickLine; my_line.onClick += OnClickLine;
my_ladderLine.onClick += OnClickRankLine; my_ladderLine.onClick += OnClickRankLine;
InitLines(); 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() private void OnDestroy()
@@ -257,7 +232,7 @@ namespace TcgEngine.UI
} }
} }
//
// private void RankPanelColl() // private void RankPanelColl()
// { // {
// if (isLadderRank) // if (isLadderRank)

View 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();
}
}
}

View File

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

View File

@@ -17,13 +17,13 @@ namespace TcgEngine.UI
public Text progressBar_text; public Text progressBar_text;
public Button reward_button; public Button reward_button;
public Image reward_icon;
public Image taskEnd_img; public Image taskEnd_img;
private PlayerTask playerTask; private PlayerTask playerTask;
private TaskData taskConfig; private TaskData taskConfig;
public GameObject rewardItem;
protected override void Awake() protected override void Awake()
{ {
@@ -51,11 +51,24 @@ namespace TcgEngine.UI
reward_button.onClick.RemoveAllListeners(); reward_button.onClick.RemoveAllListeners();
reward_button.onClick.AddListener(OnClickReward); 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) if (task.status == TaskStatus.Expired || task.status == TaskStatus.Claimed)
{ {
taskEnd_img.gameObject.SetActive(true); taskEnd_img.gameObject.SetActive(true);
} }
RefreshStatus(); RefreshStatus();
} }
@@ -74,13 +87,5 @@ namespace TcgEngine.UI
progressBar_slider.value = playerTask.progress; progressBar_slider.value = playerTask.progress;
progressBar_text.text = playerTask.progress + "/" + taskConfig.value1; progressBar_text.text = playerTask.progress + "/" + taskConfig.value1;
} }
private void RewardColl(Sprite icon)
{
if (reward_icon != null)
{
reward_icon.sprite = icon;
}
}
} }
} }

View 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);
}
}
}
}

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -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: