50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace BaseGames.Progression
|
|
{
|
|
public enum AchievementType { Story, Collection, Challenge, Hidden }
|
|
public enum AchievementTier { Bronze, Silver, Gold }
|
|
|
|
/// <summary>
|
|
/// 成就数据 ScriptableObject(架构 16_SupportingModules §2.3)。
|
|
/// 包含显示信息、类型/等级分类、触发条件列表及奖励配置。
|
|
/// </summary>
|
|
[CreateAssetMenu(menuName = "BaseGames/Achievement/Achievement", fileName = "ACH_")]
|
|
public class AchievementSO : ScriptableObject
|
|
{
|
|
[Header("标识")]
|
|
[Tooltip("平台成就唯一标识符(与 Steam/平台后端同步)")]
|
|
public string achievementId;
|
|
|
|
[Header("显示")]
|
|
[Tooltip("成就显示名称")]
|
|
public string displayName;
|
|
|
|
[TextArea(2, 4)]
|
|
[Tooltip("成就描述(解锁后展示)")]
|
|
public string description;
|
|
|
|
[TextArea(2, 4)]
|
|
[Tooltip("隐藏成就未解锁时展示的描述,留空则显示 ???")]
|
|
public string hiddenDescription;
|
|
|
|
[Tooltip("成就图标(解锁后)")]
|
|
public Sprite icon;
|
|
|
|
[Tooltip("隐藏成就未解锁时的占位图标")]
|
|
public Sprite hiddenIcon;
|
|
|
|
[Header("分类")]
|
|
public AchievementType type = AchievementType.Story;
|
|
public AchievementTier tier = AchievementTier.Bronze;
|
|
|
|
[Header("触发条件")]
|
|
[Tooltip("所有条件同时满足时触发解锁;留空则仅通过代码直接解锁")]
|
|
public AchievementCondition[] conditions;
|
|
|
|
[Header("奖励")]
|
|
[Tooltip("解锁此成就是否同时授予凹槽(Notch)")]
|
|
public bool grantsNotch;
|
|
}
|
|
}
|