更新game HUD 界面
This commit is contained in:
@@ -10,12 +10,16 @@ namespace IndianOceanAssets.Engine2_5D
|
|||||||
// The positional offset from the target.
|
// The positional offset from the target.
|
||||||
[SerializeField] private Vector3 offset;
|
[SerializeField] private Vector3 offset;
|
||||||
|
|
||||||
// Called once per frame.
|
[Tooltip("跟随平滑度(值越大跟随越紧密,10=几乎即时跟随)")]
|
||||||
private void Update()
|
[SerializeField] private float followSmoothness = 20f;
|
||||||
|
|
||||||
|
// Called once per frame — 使用 LateUpdate 确保在 FixedUpdate 物理移动之后执行,
|
||||||
|
// 与 LightMaskSystem 的 LateUpdate 同步,避免光照抖动
|
||||||
|
private void LateUpdate()
|
||||||
{
|
{
|
||||||
// If a target is assigned, smoothly move the camera towards the target's position plus the offset.
|
// If a target is assigned, smoothly move the camera towards the target's position plus the offset.
|
||||||
if (target)
|
if (target)
|
||||||
transform.position = Vector3.Lerp(transform.position, target.position + offset, Time.deltaTime * 8f);
|
transform.position = Vector3.Lerp(transform.position, target.position + offset, Time.deltaTime * followSmoothness);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,8 @@ namespace IndianOceanAssets.Engine2_5D
|
|||||||
{
|
{
|
||||||
[Range(1, 100)]
|
[Range(1, 100)]
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private int maxHealth = 100; // Maximum health
|
private int maxHealth = 5; // Maximum health
|
||||||
private int health = 100; // Current health
|
private int health = 5; // Current health
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private GameObject deathEffect; // Effect prefab on death
|
private GameObject deathEffect; // Effect prefab on death
|
||||||
|
|||||||
@@ -132,6 +132,13 @@ public static class UIBuilder
|
|||||||
[MenuItem("Tools/搭建 HUD Canvas")]
|
[MenuItem("Tools/搭建 HUD Canvas")]
|
||||||
public static void BuildHUD()
|
public static void BuildHUD()
|
||||||
{
|
{
|
||||||
|
// 加载 HUD 美术资源(可选,没有则用占位)
|
||||||
|
var soulIconSprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/UI/Art/HUD/soul_icon.png");
|
||||||
|
var lifeIconSprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/UI/Art/HUD/life_icon.png");
|
||||||
|
var sprintIconSprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/UI/Art/HUD/skill_sprint.png");
|
||||||
|
var bellIconSprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/UI/Art/HUD/skill_bell.png");
|
||||||
|
var lanternIconSprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/UI/Art/HUD/skill_lantern.png");
|
||||||
|
|
||||||
// 创建 HUD Canvas
|
// 创建 HUD Canvas
|
||||||
var hudCanvasObj = new GameObject("HUD_Canvas");
|
var hudCanvasObj = new GameObject("HUD_Canvas");
|
||||||
var canvas = hudCanvasObj.AddComponent<Canvas>();
|
var canvas = hudCanvasObj.AddComponent<Canvas>();
|
||||||
@@ -143,104 +150,89 @@ public static class UIBuilder
|
|||||||
|
|
||||||
// 添加 GameHUD 脚本
|
// 添加 GameHUD 脚本
|
||||||
var hud = hudCanvasObj.AddComponent<GameHUD>();
|
var hud = hudCanvasObj.AddComponent<GameHUD>();
|
||||||
|
var so = new SerializedObject(hud);
|
||||||
|
|
||||||
// ===== 左上角:血量区域 =====
|
// ===== 左上角:魂灵计数 =====
|
||||||
var healthArea = CreateChild(hudCanvasObj, "HealthArea", new Vector2(20, -20));
|
var soulArea = CreateChild(hudCanvasObj, "SoulArea", new Vector2(20, -20));
|
||||||
var healthLayout = healthArea.AddComponent<VerticalLayoutGroup>();
|
var soulLayout = soulArea.AddComponent<HorizontalLayoutGroup>();
|
||||||
healthLayout.spacing = 5;
|
soulLayout.spacing = 8;
|
||||||
healthLayout.childForceExpandWidth = false;
|
soulLayout.childForceExpandWidth = false;
|
||||||
healthLayout.childForceExpandHeight = false;
|
soulLayout.childForceExpandHeight = true;
|
||||||
healthArea.AddComponent<ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
soulLayout.childAlignment = TextAnchor.MiddleLeft;
|
||||||
|
soulArea.AddComponent<ContentSizeFitter>().horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||||
|
|
||||||
// 血量 Slider
|
// 魂灵 Icon
|
||||||
var sliderObj = new GameObject("HealthSlider");
|
var soulIconObj = CreateIcon(soulArea.transform, "SoulIcon", soulIconSprite, new Vector2(40, 40), Color.cyan);
|
||||||
sliderObj.transform.SetParent(healthArea.transform, false);
|
so.FindProperty("soulIcon").objectReferenceValue = soulIconObj.GetComponent<Image>();
|
||||||
var slider = sliderObj.AddComponent<Slider>();
|
|
||||||
slider.minValue = 0;
|
|
||||||
slider.maxValue = 1;
|
|
||||||
slider.value = 1;
|
|
||||||
slider.interactable = false;
|
|
||||||
var sliderRect = sliderObj.GetComponent<RectTransform>();
|
|
||||||
sliderRect.sizeDelta = new Vector2(200, 20);
|
|
||||||
|
|
||||||
// Slider 背景
|
// 魂灵数字
|
||||||
var sliderBg = new GameObject("Background");
|
var soulCountObj = CreateText(soulArea.transform, "SoulCount", "0", 28, TextAnchor.MiddleLeft);
|
||||||
sliderBg.transform.SetParent(sliderObj.transform, false);
|
soulCountObj.GetComponent<Text>().fontStyle = FontStyle.Bold;
|
||||||
var bgImage = sliderBg.AddComponent<Image>();
|
soulCountObj.GetComponent<RectTransform>().sizeDelta = new Vector2(60, 40);
|
||||||
bgImage.color = new Color(0.2f, 0.2f, 0.2f, 0.8f);
|
so.FindProperty("soulCountText").objectReferenceValue = soulCountObj.GetComponent<Text>();
|
||||||
var bgRect = sliderBg.GetComponent<RectTransform>();
|
|
||||||
bgRect.anchorMin = Vector2.zero;
|
|
||||||
bgRect.anchorMax = Vector2.one;
|
|
||||||
bgRect.sizeDelta = Vector2.zero;
|
|
||||||
|
|
||||||
// Slider 填充区域
|
// ===== 左下角:生命图标(5个) =====
|
||||||
var fillArea = new GameObject("Fill Area");
|
var lifeArea = CreateChild(hudCanvasObj, "LifeArea", new Vector2(20, -20));
|
||||||
fillArea.transform.SetParent(sliderObj.transform, false);
|
var lifeAreaRect = lifeArea.GetComponent<RectTransform>();
|
||||||
var fillAreaRect = fillArea.AddComponent<RectTransform>();
|
lifeAreaRect.anchorMin = new Vector2(0, 0);
|
||||||
fillAreaRect.anchorMin = new Vector2(0, 0);
|
lifeAreaRect.anchorMax = new Vector2(0, 0);
|
||||||
fillAreaRect.anchorMax = new Vector2(1, 1);
|
lifeAreaRect.pivot = new Vector2(0, 0);
|
||||||
fillAreaRect.sizeDelta = Vector2.zero;
|
lifeAreaRect.anchoredPosition = new Vector2(20, 20);
|
||||||
|
|
||||||
var fill = new GameObject("Fill");
|
var lifeLayout = lifeArea.AddComponent<HorizontalLayoutGroup>();
|
||||||
fill.transform.SetParent(fillArea.transform, false);
|
lifeLayout.spacing = 5;
|
||||||
var fillImage = fill.AddComponent<Image>();
|
lifeLayout.childForceExpandWidth = false;
|
||||||
fillImage.color = new Color(0.8f, 0.1f, 0.1f, 0.9f);
|
lifeLayout.childForceExpandHeight = true;
|
||||||
var fillRect = fill.GetComponent<RectTransform>();
|
lifeLayout.childAlignment = TextAnchor.LowerLeft;
|
||||||
fillRect.anchorMin = Vector2.zero;
|
|
||||||
fillRect.anchorMax = Vector2.one;
|
|
||||||
fillRect.sizeDelta = Vector2.zero;
|
|
||||||
|
|
||||||
slider.fillRect = fillRect;
|
var lifeIconsProp = so.FindProperty("lifeIcons");
|
||||||
|
lifeIconsProp.arraySize = 5;
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
var lifeIconObj = CreateIcon(lifeArea.transform, $"LifeIcon_{i}", lifeIconSprite, new Vector2(36, 36), Color.red);
|
||||||
|
lifeIconsProp.GetArrayElementAtIndex(i).objectReferenceValue = lifeIconObj.GetComponent<Image>();
|
||||||
|
}
|
||||||
|
|
||||||
// 血量文字
|
// ===== 右下角:技能图标(冲刺/摇铃/灵灯) =====
|
||||||
var healthTextObj = CreateText(healthArea.transform, "HealthText", "100/100", 14, TextAnchor.MiddleLeft);
|
var skillArea = CreateChild(hudCanvasObj, "SkillArea", new Vector2(-20, -20));
|
||||||
healthTextObj.GetComponent<RectTransform>().sizeDelta = new Vector2(200, 20);
|
var skillAreaRect = skillArea.GetComponent<RectTransform>();
|
||||||
|
skillAreaRect.anchorMin = new Vector2(1, 0);
|
||||||
|
skillAreaRect.anchorMax = new Vector2(1, 0);
|
||||||
|
skillAreaRect.pivot = new Vector2(1, 0);
|
||||||
|
skillAreaRect.anchoredPosition = new Vector2(-20, 20);
|
||||||
|
|
||||||
// ===== 左上角下方:灵灯区域 =====
|
var skillLayout = skillArea.AddComponent<HorizontalLayoutGroup>();
|
||||||
var lanternArea = CreateChild(hudCanvasObj, "LanternArea", new Vector2(20, -80));
|
skillLayout.spacing = 12;
|
||||||
var lanternLayout = lanternArea.AddComponent<VerticalLayoutGroup>();
|
skillLayout.childForceExpandWidth = false;
|
||||||
lanternLayout.spacing = 3;
|
skillLayout.childForceExpandHeight = true;
|
||||||
lanternLayout.childForceExpandWidth = false;
|
skillLayout.childAlignment = TextAnchor.LowerRight;
|
||||||
lanternLayout.childForceExpandHeight = false;
|
|
||||||
lanternArea.AddComponent<ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
|
||||||
|
|
||||||
var lanternCountObj = CreateText(lanternArea.transform, "LanternCount", "灵灯: 5", 16, TextAnchor.MiddleLeft);
|
// 冲刺技能
|
||||||
lanternCountObj.GetComponent<RectTransform>().sizeDelta = new Vector2(200, 24);
|
var sprintObj = CreateSkillIcon(skillArea.transform, "SkillSprint", sprintIconSprite, new Color(0.3f, 0.8f, 1f));
|
||||||
|
so.FindProperty("skillSprintIcon").objectReferenceValue = sprintObj.transform.Find("Icon").GetComponent<Image>();
|
||||||
|
so.FindProperty("skillSprintCD").objectReferenceValue = sprintObj.transform.Find("CDOverlay").GetComponent<Image>();
|
||||||
|
|
||||||
var lanternCDObj = CreateText(lanternArea.transform, "LanternCD", "就绪", 14, TextAnchor.MiddleLeft);
|
// 摇铃技能
|
||||||
lanternCDObj.GetComponent<RectTransform>().sizeDelta = new Vector2(200, 20);
|
var bellObj = CreateSkillIcon(skillArea.transform, "SkillBell", bellIconSprite, new Color(1f, 0.85f, 0.2f));
|
||||||
|
so.FindProperty("skillBellIcon").objectReferenceValue = bellObj.transform.Find("Icon").GetComponent<Image>();
|
||||||
|
so.FindProperty("skillBellCD").objectReferenceValue = bellObj.transform.Find("CDOverlay").GetComponent<Image>();
|
||||||
|
|
||||||
// ===== 右上角:分数 + 暂停 =====
|
// 灵灯技能
|
||||||
|
var lanternObj = CreateSkillIcon(skillArea.transform, "SkillLantern", lanternIconSprite, new Color(1f, 0.6f, 0.2f));
|
||||||
|
so.FindProperty("skillLanternIcon").objectReferenceValue = lanternObj.transform.Find("Icon").GetComponent<Image>();
|
||||||
|
so.FindProperty("skillLanternCD").objectReferenceValue = lanternObj.transform.Find("CDOverlay").GetComponent<Image>();
|
||||||
|
|
||||||
|
// ===== 右上角:暂停按钮 =====
|
||||||
var topRight = CreateChild(hudCanvasObj, "TopRight", new Vector2(-20, -20));
|
var topRight = CreateChild(hudCanvasObj, "TopRight", new Vector2(-20, -20));
|
||||||
var topRightRect = topRight.GetComponent<RectTransform>();
|
var topRightRect = topRight.GetComponent<RectTransform>();
|
||||||
topRightRect.anchorMin = new Vector2(1, 1);
|
topRightRect.anchorMin = new Vector2(1, 1);
|
||||||
topRightRect.anchorMax = new Vector2(1, 1);
|
topRightRect.anchorMax = new Vector2(1, 1);
|
||||||
topRightRect.pivot = new Vector2(1, 1);
|
topRightRect.pivot = new Vector2(1, 1);
|
||||||
|
var pauseObj = CreateButton(topRight.transform, "PauseButton", "||", new Vector2(50, 50));
|
||||||
var topRightLayout = topRight.AddComponent<VerticalLayoutGroup>();
|
|
||||||
topRightLayout.spacing = 8;
|
|
||||||
topRightLayout.childForceExpandWidth = false;
|
|
||||||
topRightLayout.childForceExpandHeight = false;
|
|
||||||
topRightLayout.childAlignment = TextAnchor.UpperRight;
|
|
||||||
topRight.AddComponent<ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
|
||||||
|
|
||||||
var scoreObj = CreateText(topRight.transform, "ScoreText", "分数: 0", 20, TextAnchor.MiddleRight);
|
|
||||||
scoreObj.GetComponent<RectTransform>().sizeDelta = new Vector2(200, 30);
|
|
||||||
|
|
||||||
// 暂停按钮
|
|
||||||
var pauseObj = CreateButton(topRight.transform, "PauseButton", "暂停", new Vector2(100, 35));
|
|
||||||
|
|
||||||
// ===== 连接 GameHUD 引用 =====
|
|
||||||
var so = new SerializedObject(hud);
|
|
||||||
so.FindProperty("healthSlider").objectReferenceValue = slider;
|
|
||||||
so.FindProperty("healthText").objectReferenceValue = healthTextObj.GetComponent<Text>();
|
|
||||||
so.FindProperty("lanternCountText").objectReferenceValue = lanternCountObj.GetComponent<Text>();
|
|
||||||
so.FindProperty("lanternCDText").objectReferenceValue = lanternCDObj.GetComponent<Text>();
|
|
||||||
so.FindProperty("scoreText").objectReferenceValue = scoreObj.GetComponent<Text>();
|
|
||||||
so.FindProperty("pauseButton").objectReferenceValue = pauseObj.GetComponent<Button>();
|
so.FindProperty("pauseButton").objectReferenceValue = pauseObj.GetComponent<Button>();
|
||||||
so.ApplyModifiedProperties();
|
|
||||||
|
|
||||||
Debug.Log("[UIBuilder] HUD Canvas 搭建完成");
|
so.ApplyModifiedProperties();
|
||||||
|
Debug.Log("[UIBuilder] HUD Canvas 搭建完成(魂灵+生命+技能CD)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -361,6 +353,76 @@ public static class UIBuilder
|
|||||||
return btnObj;
|
return btnObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static GameObject CreateIcon(Transform parent, string name, Sprite sprite, Vector2 size, Color placeholderColor)
|
||||||
|
{
|
||||||
|
var obj = new GameObject(name);
|
||||||
|
obj.transform.SetParent(parent, false);
|
||||||
|
obj.AddComponent<RectTransform>().sizeDelta = size;
|
||||||
|
var img = obj.AddComponent<Image>();
|
||||||
|
if (sprite != null)
|
||||||
|
{
|
||||||
|
img.sprite = sprite;
|
||||||
|
img.preserveAspect = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
img.color = placeholderColor; // 占位色
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static GameObject CreateSkillIcon(Transform parent, string name, Sprite sprite, Color cdColor)
|
||||||
|
{
|
||||||
|
var container = new GameObject(name);
|
||||||
|
container.transform.SetParent(parent, false);
|
||||||
|
container.AddComponent<RectTransform>().sizeDelta = new Vector2(56, 56);
|
||||||
|
|
||||||
|
// 背景
|
||||||
|
var bgObj = new GameObject("BG");
|
||||||
|
bgObj.transform.SetParent(container.transform, false);
|
||||||
|
var bgRect = bgObj.AddComponent<RectTransform>();
|
||||||
|
bgRect.anchorMin = Vector2.zero;
|
||||||
|
bgRect.anchorMax = Vector2.one;
|
||||||
|
bgRect.sizeDelta = Vector2.zero;
|
||||||
|
var bgImg = bgObj.AddComponent<Image>();
|
||||||
|
bgImg.color = new Color(0.1f, 0.1f, 0.1f, 0.7f);
|
||||||
|
|
||||||
|
// 技能图标
|
||||||
|
var iconObj = new GameObject("Icon");
|
||||||
|
iconObj.transform.SetParent(container.transform, false);
|
||||||
|
var iconRect = iconObj.AddComponent<RectTransform>();
|
||||||
|
iconRect.anchorMin = new Vector2(0.1f, 0.1f);
|
||||||
|
iconRect.anchorMax = new Vector2(0.9f, 0.9f);
|
||||||
|
iconRect.sizeDelta = Vector2.zero;
|
||||||
|
var iconImg = iconObj.AddComponent<Image>();
|
||||||
|
if (sprite != null)
|
||||||
|
{
|
||||||
|
iconImg.sprite = sprite;
|
||||||
|
iconImg.preserveAspect = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iconImg.color = cdColor; // 占位色
|
||||||
|
}
|
||||||
|
|
||||||
|
// CD 遮罩(覆盖在图标上方)
|
||||||
|
var cdObj = new GameObject("CDOverlay");
|
||||||
|
cdObj.transform.SetParent(container.transform, false);
|
||||||
|
var cdRect = cdObj.AddComponent<RectTransform>();
|
||||||
|
cdRect.anchorMin = Vector2.zero;
|
||||||
|
cdRect.anchorMax = Vector2.one;
|
||||||
|
cdRect.sizeDelta = Vector2.zero;
|
||||||
|
var cdImg = cdObj.AddComponent<Image>();
|
||||||
|
cdImg.color = new Color(0, 0, 0, 0.6f);
|
||||||
|
cdImg.type = Image.Type.Filled;
|
||||||
|
cdImg.fillMethod = Image.FillMethod.Radial360;
|
||||||
|
cdImg.fillOrigin = 2; // Top
|
||||||
|
cdImg.fillAmount = 0f;
|
||||||
|
cdObj.SetActive(false); // 初始无 CD
|
||||||
|
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
|
||||||
private static GameObject CreateImageButton(Transform parent, string name, Sprite sprite)
|
private static GameObject CreateImageButton(Transform parent, string name, Sprite sprite)
|
||||||
{
|
{
|
||||||
var btnObj = new GameObject(name);
|
var btnObj = new GameObject(name);
|
||||||
|
|||||||
@@ -89,8 +89,9 @@ namespace IndianOceanAssets.Engine2_5D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void LateUpdate()
|
||||||
{
|
{
|
||||||
|
// 在 FixedUpdate 之后读取光源位置,避免物理移动与光照更新时序不同步导致的抖动
|
||||||
UpdateLightData();
|
UpdateLightData();
|
||||||
UpdateMaskPosition();
|
UpdateMaskPosition();
|
||||||
}
|
}
|
||||||
|
|||||||
+1697
-446
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 8.4 KiB |
@@ -0,0 +1,175 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: XHJKvC+vVnlOPp9LLCQewE30LC7mCPf3eBcHZTtqILyisXSBfkS/67k=
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
webStreaming: 0
|
||||||
|
priorityLevel: 0
|
||||||
|
uploadedMode: 2
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 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
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: HMIAndroid
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: OpenHarmony
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,175 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: C3sftiKqVH2N8JPizdCuCaVRAKGsDDkEbUbP/ELi20k8gquEvmMXDJs=
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
webStreaming: 0
|
||||||
|
priorityLevel: 0
|
||||||
|
uploadedMode: 2
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 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
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: HMIAndroid
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: OpenHarmony
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
@@ -0,0 +1,175 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: B34Z4y//BS7Pz07ihx9G8/bOPcXyo9quAPmufJbltifTxVXe431vs94=
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
webStreaming: 0
|
||||||
|
priorityLevel: 0
|
||||||
|
uploadedMode: 2
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 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
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: HMIAndroid
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: OpenHarmony
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
@@ -0,0 +1,175 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: Dy4asi2uAXPSRLtfrAXmNGo8rX/KQN2CcdpDaGMA4CgXobkltjbRQ8w=
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
webStreaming: 0
|
||||||
|
priorityLevel: 0
|
||||||
|
uploadedMode: 2
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 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
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: HMIAndroid
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: OpenHarmony
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
@@ -0,0 +1,175 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: CykesC+qW3nsQ7S9PKRSTd5pQ16Pi3+cyqjj/w3espHWzBDtD+VVohc=
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
webStreaming: 0
|
||||||
|
priorityLevel: 0
|
||||||
|
uploadedMode: 2
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 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
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: HMIAndroid
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: OpenHarmony
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
@@ -0,0 +1,175 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: DSsbsSuuVi58o7D3QwqOseqio8g1ATIkYVOwcZk70qbC8UtJT5u9diM=
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
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
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
webStreaming: 0
|
||||||
|
priorityLevel: 0
|
||||||
|
uploadedMode: 2
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 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
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Server
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: HMIAndroid
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: OpenHarmony
|
||||||
|
maxTextureSize: 2048
|
||||||
|
maxPlaceholderSize: 32
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
+101
-60
@@ -1,124 +1,165 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
using IndianOceanAssets.Engine2_5D;
|
using IndianOceanAssets.Engine2_5D;
|
||||||
using GameFramework;
|
|
||||||
|
|
||||||
namespace GameFramework
|
namespace GameFramework
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 游戏内 HUD —— 显示血量、灵灯数量/CD、分数、暂停按钮。
|
/// 游戏内 HUD —— 魂灵计数 + 生命图标 + 技能CD。
|
||||||
/// 挂在 Gameplay 场景的 HUD Canvas 上。
|
///
|
||||||
|
/// 布局:
|
||||||
|
/// - 左上角:收集到的魂灵(icon + 数字)
|
||||||
|
/// - 左下角:5个生命图标
|
||||||
|
/// - 右下角:3个技能图标(冲刺/摇铃/灵灯)+ CD遮罩
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GameHUD : MonoBehaviour
|
public class GameHUD : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("血量")]
|
[Header("魂灵计数(左上角)")]
|
||||||
[SerializeField] private Slider healthSlider;
|
[SerializeField] private Image soulIcon;
|
||||||
[SerializeField] private Text healthText;
|
[SerializeField] private Text soulCountText;
|
||||||
|
|
||||||
[Header("灵灯")]
|
[Header("生命图标(左下角)")]
|
||||||
[SerializeField] private Text lanternCountText;
|
[SerializeField] private Image[] lifeIcons; // 5个生命图标
|
||||||
[SerializeField] private Text lanternCDText;
|
|
||||||
[SerializeField] private Image lanternCDFill; // 可选:CD 圆形填充
|
|
||||||
|
|
||||||
[Header("分数")]
|
[Header("技能图标(右下角)")]
|
||||||
[SerializeField] private Text scoreText;
|
[SerializeField] private Image skillSprintIcon;
|
||||||
|
[SerializeField] private Image skillSprintCD; // CD 遮罩(Image.fillAmount)
|
||||||
|
[SerializeField] private Image skillBellIcon;
|
||||||
|
[SerializeField] private Image skillBellCD;
|
||||||
|
[SerializeField] private Image skillLanternIcon;
|
||||||
|
[SerializeField] private Image skillLanternCD;
|
||||||
|
|
||||||
[Header("暂停")]
|
[Header("暂停")]
|
||||||
[SerializeField] private Button pauseButton;
|
[SerializeField] private Button pauseButton;
|
||||||
|
|
||||||
private HealthSystem _playerHealth;
|
private HealthSystem _playerHealth;
|
||||||
private SpiritLanternSystem _lanternSystem;
|
private SpiritLanternSystem _lanternSystem;
|
||||||
private int _maxHealth;
|
private EchoSystem _echoSystem;
|
||||||
|
private PlayerController _playerController;
|
||||||
|
private int _maxHealth = 5;
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
// 查找玩家
|
|
||||||
var player = GameObject.FindWithTag("Player");
|
var player = GameObject.FindWithTag("Player");
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
_playerHealth = player.GetComponent<HealthSystem>();
|
_playerHealth = player.GetComponent<HealthSystem>();
|
||||||
_lanternSystem = player.GetComponent<SpiritLanternSystem>();
|
_lanternSystem = player.GetComponent<SpiritLanternSystem>();
|
||||||
|
_echoSystem = player.GetComponent<EchoSystem>();
|
||||||
// 获取 maxHealth
|
_playerController = player.GetComponent<PlayerController>();
|
||||||
if (_playerHealth != null)
|
|
||||||
{
|
|
||||||
var field = typeof(HealthSystem).GetField("maxHealth",
|
|
||||||
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
|
||||||
if (field != null)
|
|
||||||
_maxHealth = (int)field.GetValue(_playerHealth);
|
|
||||||
else
|
|
||||||
_maxHealth = 100;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 绑定暂停按钮
|
|
||||||
if (pauseButton != null)
|
if (pauseButton != null)
|
||||||
pauseButton.onClick.AddListener(OnPauseClick);
|
pauseButton.onClick.AddListener(OnPauseClick);
|
||||||
|
|
||||||
// 订阅分数事件
|
// 订阅分数事件(魂灵计数复用分数系统)
|
||||||
ScoreManager.onScoreChanged += UpdateScore;
|
ScoreManager.onScoreChanged += UpdateSoulCount;
|
||||||
|
UpdateSoulCount(ScoreManager.Instance != null ? ScoreManager.Instance.CurrentScore : 0);
|
||||||
|
|
||||||
// 初始更新
|
UpdateLifeIcons();
|
||||||
UpdateScore(ScoreManager.Instance != null ? ScoreManager.Instance.CurrentScore : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDestroy()
|
void OnDestroy()
|
||||||
{
|
{
|
||||||
ScoreManager.onScoreChanged -= UpdateScore;
|
ScoreManager.onScoreChanged -= UpdateSoulCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
UpdateHealth();
|
UpdateLifeIcons();
|
||||||
UpdateLantern();
|
UpdateSkillCooldowns();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateHealth()
|
/// <summary>
|
||||||
|
/// 更新魂灵计数(左上角)。
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateSoulCount(int count)
|
||||||
{
|
{
|
||||||
if (_playerHealth == null) return;
|
if (soulCountText != null)
|
||||||
|
soulCountText.text = count.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新生命图标(左下角)。
|
||||||
|
/// 根据当前血量显示/隐藏对应图标。
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateLifeIcons()
|
||||||
|
{
|
||||||
|
if (_playerHealth == null || lifeIcons == null || lifeIcons.Length == 0) return;
|
||||||
|
|
||||||
// 获取当前血量
|
// 获取当前血量
|
||||||
var field = typeof(HealthSystem).GetField("health",
|
var healthField = typeof(HealthSystem).GetField("health",
|
||||||
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
int currentHealth = field != null ? (int)field.GetValue(_playerHealth) : _maxHealth;
|
int currentHealth = healthField != null ? (int)healthField.GetValue(_playerHealth) : _maxHealth;
|
||||||
|
|
||||||
if (healthSlider != null)
|
for (int i = 0; i < lifeIcons.Length; i++)
|
||||||
healthSlider.value = (float)currentHealth / _maxHealth;
|
{
|
||||||
|
if (lifeIcons[i] != null)
|
||||||
if (healthText != null)
|
lifeIcons[i].enabled = (i < currentHealth);
|
||||||
healthText.text = $"{currentHealth}/{_maxHealth}";
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateLantern()
|
/// <summary>
|
||||||
|
/// 更新技能CD遮罩(右下角)。
|
||||||
|
/// 使用 Image.fillAmount 实现圆形CD效果。
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateSkillCooldowns()
|
||||||
{
|
{
|
||||||
if (_lanternSystem == null) return;
|
// 冲刺 CD(从 PlayerController 读取 rollCooldown + lastRollTime)
|
||||||
|
if (_playerController != null)
|
||||||
if (lanternCountText != null)
|
|
||||||
lanternCountText.text = $"灵灯: {_lanternSystem.RemainingLanterns}";
|
|
||||||
|
|
||||||
if (lanternCDText != null)
|
|
||||||
{
|
{
|
||||||
if (_lanternSystem.IsCooldownReady)
|
var cdField = typeof(PlayerController).GetField("rollCooldown",
|
||||||
lanternCDText.text = "就绪";
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
else
|
var lastField = typeof(PlayerController).GetField("lastRollTime",
|
||||||
lanternCDText.text = $"{_lanternSystem.CooldownRemaining:F1}s";
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
|
float sprintCD = cdField != null ? (float)cdField.GetValue(_playerController) : 1f;
|
||||||
|
float lastRoll = lastField != null ? (float)lastField.GetValue(_playerController) : -999f;
|
||||||
|
float remaining = Mathf.Max(0f, (lastRoll + sprintCD) - Time.time);
|
||||||
|
UpdateSkillCD(skillSprintCD, remaining, sprintCD);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lanternCDFill != null)
|
// 摇铃 CD(从 EchoSystem 读取 cooldown + _lastEchoTime)
|
||||||
|
if (_echoSystem != null)
|
||||||
{
|
{
|
||||||
// CD 填充:就绪时满,冷却中递减
|
var cdField = typeof(EchoSystem).GetField("cooldown",
|
||||||
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
|
var lastField = typeof(EchoSystem).GetField("_lastEchoTime",
|
||||||
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
|
float bellCD = cdField != null ? (float)cdField.GetValue(_echoSystem) : 2f;
|
||||||
|
float lastTime = lastField != null ? (float)lastField.GetValue(_echoSystem) : -999f;
|
||||||
|
float remaining = Mathf.Max(0f, (lastTime + bellCD) - Time.time);
|
||||||
|
UpdateSkillCD(skillBellCD, remaining, bellCD);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 灵灯 CD(从 SpiritLanternSystem 读取)
|
||||||
|
if (_lanternSystem != null)
|
||||||
|
{
|
||||||
|
float remaining = _lanternSystem.CooldownRemaining;
|
||||||
var cdField = typeof(SpiritLanternSystem).GetField("cooldown",
|
var cdField = typeof(SpiritLanternSystem).GetField("cooldown",
|
||||||
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
float maxCD = cdField != null ? (float)cdField.GetValue(_lanternSystem) : 3f;
|
float maxCD = cdField != null ? (float)cdField.GetValue(_lanternSystem) : 3f;
|
||||||
lanternCDFill.fillAmount = _lanternSystem.IsCooldownReady ? 1f :
|
UpdateSkillCD(skillLanternCD, remaining, maxCD);
|
||||||
1f - (_lanternSystem.CooldownRemaining / maxCD);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateScore(int score)
|
/// <summary>
|
||||||
|
/// 更新单个技能CD遮罩。
|
||||||
|
/// fillAmount = 1 表示CD中(完全遮挡),0 表示就绪(无遮挡)。
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateSkillCD(Image cdImage, float remaining, float total)
|
||||||
{
|
{
|
||||||
if (scoreText != null)
|
if (cdImage == null) return;
|
||||||
scoreText.text = $"分数: {score}";
|
|
||||||
|
if (total <= 0f || remaining <= 0f)
|
||||||
|
{
|
||||||
|
cdImage.fillAmount = 0f;
|
||||||
|
cdImage.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cdImage.gameObject.SetActive(true);
|
||||||
|
cdImage.fillAmount = remaining / total;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPauseClick()
|
private void OnPauseClick()
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ MonoBehaviour:
|
|||||||
radius: 0.8
|
radius: 0.8
|
||||||
intensity: 1
|
intensity: 1
|
||||||
registerOnStart: 1
|
registerOnStart: 1
|
||||||
offset: {x: 0, y: 10, z: 0}
|
offset: {x: 0, y: 0, z: 0.3}
|
||||||
followTarget: {fileID: 0}
|
followTarget: {fileID: 0}
|
||||||
enableFlicker: 1
|
enableFlicker: 1
|
||||||
flickerSpeed: 0.1
|
flickerSpeed: 0.1
|
||||||
|
|||||||
@@ -27,14 +27,14 @@ EditorUserSettings:
|
|||||||
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
|
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
|
||||||
flags: 0
|
flags: 0
|
||||||
RecentlyUsedSceneGuid-7:
|
RecentlyUsedSceneGuid-7:
|
||||||
value: 5a55515156575a0b0f56592346260f444f16197c7e7f24697d2a4a32b1b0353e
|
|
||||||
flags: 0
|
|
||||||
RecentlyUsedSceneGuid-8:
|
|
||||||
value: 5300055151055f5a5e0c0f27477708444515192b287124367c791f30b3b9616d
|
value: 5300055151055f5a5e0c0f27477708444515192b287124367c791f30b3b9616d
|
||||||
flags: 0
|
flags: 0
|
||||||
RecentlyUsedSceneGuid-9:
|
RecentlyUsedSceneGuid-8:
|
||||||
value: 0209025f575750595c57092149765d444e4e49727e7c7068757b1c65b6e36c3b
|
value: 0209025f575750595c57092149765d444e4e49727e7c7068757b1c65b6e36c3b
|
||||||
flags: 0
|
flags: 0
|
||||||
|
RecentlyUsedSceneGuid-9:
|
||||||
|
value: 5a55515156575a0b0f56592346260f444f16197c7e7f24697d2a4a32b1b0353e
|
||||||
|
flags: 0
|
||||||
UnityEditor.ShaderGraph.Blackboard:
|
UnityEditor.ShaderGraph.Blackboard:
|
||||||
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7
|
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7
|
||||||
flags: 0
|
flags: 0
|
||||||
|
|||||||
Reference in New Issue
Block a user