gameplay所有基本功能都装了,加入了全局警告。加入飘字等各种东西。

This commit is contained in:
2026-02-21 00:20:03 +08:00
parent 9f7c1c57b7
commit 14fb281d6f
254 changed files with 102927 additions and 9427 deletions
@@ -0,0 +1,8 @@
using UnityEngine;
using UnityEngine.UI;
public class enemyBallLightPrefab : MonoBehaviour
{
public Image ballImage_img;
public Image cursor_img;
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c6c9fce59f1efea47a0ab5749a9d1d23
@@ -0,0 +1,204 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &556102388742712204
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8120702170385693631}
- component: {fileID: 8825121522545113228}
- component: {fileID: 1053406925112209067}
m_Layer: 5
m_Name: cursor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8120702170385693631
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 556102388742712204}
m_LocalRotation: {x: 0, y: 0, z: 0.26303118, w: 0.9647873}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1475245678665496213}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 30.5}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 11.71, y: 16.1}
m_SizeDelta: {x: 10, y: 10}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8825121522545113228
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 556102388742712204}
m_CullTransparentMesh: 1
--- !u!114 &1053406925112209067
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 556102388742712204}
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: 82ff18ae7ceadd943996d346a7d5b7da, 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: 0.3
--- !u!1 &2979410272479687480
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5774449902534146125}
- component: {fileID: 7137847011436429731}
m_Layer: 5
m_Name: enemyListBallPrefab
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5774449902534146125
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2979410272479687480}
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: 1475245678665496213}
m_Father: {fileID: 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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &7137847011436429731
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2979410272479687480}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c6c9fce59f1efea47a0ab5749a9d1d23, type: 3}
m_Name:
m_EditorClassIdentifier:
ballImage_img: {fileID: 5342438604247076245}
cursor_img: {fileID: 1053406925112209067}
--- !u!1 &4474694856134958237
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1475245678665496213}
- component: {fileID: 2116234052611698026}
- component: {fileID: 5342438604247076245}
m_Layer: 5
m_Name: ballImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1475245678665496213
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4474694856134958237}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.000010233372}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8120702170385693631}
m_Father: {fileID: 5774449902534146125}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 110, y: -50}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2116234052611698026
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4474694856134958237}
m_CullTransparentMesh: 1
--- !u!114 &5342438604247076245
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4474694856134958237}
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: 10913, guid: 0000000000000000f000000000000000, type: 0}
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: 0.3
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 835171242d507cb448a22d7b5a2b32a1
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,118 @@
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
public class load_enemyBall_light : MonoBehaviour
{
[Header("prefabs")]
public GameObject enemyBallLightPrefab;
public Transform obj_to_put; // Changed to Transform for easier parenting
[Header("colors")]
public Color symbol_default_color = Color.white;
public Color symbol_dead_color = Color.gray;
public Color symbol_simple_color = Color.green;
public Color symbol_elite_color = Color.blue;
public Color symbol_boss_color = Color.red;
public Color symbol_legendary_color = Color.yellow;
private List<global::enemyBallLightPrefab> instantiatedBalls = new List<global::enemyBallLightPrefab>();
private int currentEnemyIndex = 0;
public void InitializeEnemyBalls(List<EnemyData_SO.EnemyType> enemyList)
{
// Clear existing balls list references
instantiatedBalls.Clear();
currentEnemyIndex = 0;
// Clean up all children in obj_to_put to ensure a fresh start
if (obj_to_put != null)
{
for (int i = obj_to_put.childCount - 1; i >= 0; i--)
{
Destroy(obj_to_put.GetChild(i).gameObject);
}
}
if (enemyList == null || enemyList.Count == 0) return;
// Instantiate balls based on enemy count
foreach (var enemyType in enemyList)
{
if (enemyBallLightPrefab == null || obj_to_put == null) continue;
GameObject ballObj = Instantiate(enemyBallLightPrefab, obj_to_put);
global::enemyBallLightPrefab ballScript = ballObj.GetComponent<global::enemyBallLightPrefab>();
if (ballScript != null)
{
// Set color based on enemy type
if (ballScript.ballImage_img != null)
{
ballScript.ballImage_img.color = GetColorForEnemyType(enemyType);
}
// Initial cursor state: only first one active
if (ballScript.cursor_img != null)
{
ballScript.cursor_img.gameObject.SetActive(instantiatedBalls.Count == 0);
}
instantiatedBalls.Add(ballScript);
}
}
}
public void OnEnemyDefeated()
{
// Check if we have valid balls list
if (instantiatedBalls.Count == 0) return;
// Ensure index is within bounds
if (currentEnemyIndex >= instantiatedBalls.Count) return;
// Change the current enemy's ball color to dead color
if (instantiatedBalls[currentEnemyIndex].ballImage_img != null)
{
instantiatedBalls[currentEnemyIndex].ballImage_img.color = symbol_dead_color;
}
// Turn off cursor for current (defeated) enemy
// UNLESS it's the last enemy, per requirements: "若最后一个敌人死亡,则最后一个敌人的cursor不消失"
if (currentEnemyIndex < instantiatedBalls.Count - 1)
{
if (instantiatedBalls[currentEnemyIndex].cursor_img != null)
{
instantiatedBalls[currentEnemyIndex].cursor_img.gameObject.SetActive(false);
}
}
// Move to next enemy
currentEnemyIndex++;
// Turn on cursor for next enemy (if exists)
if (currentEnemyIndex < instantiatedBalls.Count)
{
if (instantiatedBalls[currentEnemyIndex].cursor_img != null)
{
instantiatedBalls[currentEnemyIndex].cursor_img.gameObject.SetActive(true);
}
}
}
private Color GetColorForEnemyType(EnemyData_SO.EnemyType enemyType)
{
// Assuming enemy types map to standard conventions or simple integer mapping
// Adjust these mappings based on actual EnemyInfo.enemyType values if known
// For now using a switch based on common patterns or provided requirements
switch (enemyType)
{
case EnemyData_SO.EnemyType.Simple: return symbol_simple_color;
case EnemyData_SO.EnemyType.Elite: return symbol_elite_color;
case EnemyData_SO.EnemyType.Boss: return symbol_boss_color;
case EnemyData_SO.EnemyType.Legend: return symbol_legendary_color;
default: return symbol_default_color;
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f09c766e1ee67bb46a574a9aa777022f