增加怪物功能,调整灵灯参数
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using IndianOceanAssets.Engine2_5D;
|
||||
|
||||
/// <summary>
|
||||
/// 编辑器工具:在场景中批量创建敌人实例。
|
||||
/// 每个敌人使用对应的新预制体(enemy_01~05),保留各自的外观和参数。
|
||||
/// 菜单路径:Assets > 创建5个敌人 (enemy_01~05)
|
||||
/// </summary>
|
||||
public static class EnemyBatchCreator
|
||||
{
|
||||
[MenuItem("Assets/创建5个敌人 (enemy_01~05)")]
|
||||
public static void Create()
|
||||
{
|
||||
// 5个新预制体路径(对应各自的外观)
|
||||
string[] prefabPaths = {
|
||||
"Assets/enemy/Prefabs/enemy_01.prefab",
|
||||
"Assets/enemy/Prefabs/enemy_02.prefab",
|
||||
"Assets/enemy/Prefabs/enemy_03.prefab",
|
||||
"Assets/enemy/Prefabs/enemy_04.prefab",
|
||||
"Assets/enemy/Prefabs/enemy_05.prefab",
|
||||
};
|
||||
string[] names = { "enemy_01", "enemy_02", "enemy_03", "enemy_04", "enemy_05" };
|
||||
|
||||
// 查找当前场景中的玩家位置,围绕玩家分布敌人
|
||||
var player = GameObject.FindWithTag("Player");
|
||||
Vector3 center = player != null ? player.transform.position : Vector3.zero;
|
||||
|
||||
// 5个敌人的偏移位置(围绕玩家分布)
|
||||
Vector3[] offsets = new Vector3[]
|
||||
{
|
||||
new Vector3(5f, 0f, 3f),
|
||||
new Vector3(-5f, 0f, 3f),
|
||||
new Vector3(5f, 0f, -3f),
|
||||
new Vector3(-5f, 0f, -3f),
|
||||
new Vector3(0f, 0f, 6f),
|
||||
};
|
||||
|
||||
Undo.SetCurrentGroupName("创建5个敌人");
|
||||
|
||||
int created = 0;
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPaths[i]);
|
||||
if (prefab == null)
|
||||
{
|
||||
Debug.LogWarning($"[EnemyBatchCreator] 找不到预制体: {prefabPaths[i]},跳过");
|
||||
continue;
|
||||
}
|
||||
|
||||
// 实例化对应的 Prefab 到场景中
|
||||
GameObject enemy = (GameObject)PrefabUtility.InstantiatePrefab(prefab);
|
||||
enemy.name = names[i];
|
||||
enemy.transform.position = center + offsets[i];
|
||||
|
||||
// 注册 Undo
|
||||
Undo.RegisterCreatedObjectUndo(enemy, $"创建 {names[i]}");
|
||||
created++;
|
||||
}
|
||||
|
||||
// 选中刚创建的敌人
|
||||
var all = new GameObject[created];
|
||||
int idx = 0;
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var go = GameObject.Find(names[i]);
|
||||
if (go != null) all[idx++] = go;
|
||||
}
|
||||
Selection.objects = all;
|
||||
|
||||
Debug.Log($"[EnemyBatchCreator] 已创建 {created} 个敌人: enemy_01 ~ enemy_05,使用各自对应的新预制体");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user