feat(enemy): AbilityRef——AI 层能力引用资产化,字符串仅作定制脚本兜底
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using NUnit.Framework;
|
||||
using UnityEngine;
|
||||
using BaseGames.Enemies.Abilities;
|
||||
|
||||
namespace BaseGames.Tests.EditMode.AI
|
||||
{
|
||||
public class AbilityRefTests
|
||||
{
|
||||
[Test]
|
||||
public void ImplicitFromString_ExposesLiteralId()
|
||||
{
|
||||
AbilityRef r = "e001_chase";
|
||||
Assert.AreEqual("e001_chase", r.Id);
|
||||
Assert.IsFalse(r.IsEmpty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FromAsset_ExposesAssetAbilityId()
|
||||
{
|
||||
var so = ScriptableObject.CreateInstance<EnemyAbilitySO>();
|
||||
so.abilityId = "from_asset";
|
||||
AbilityRef r = so;
|
||||
Assert.AreEqual("from_asset", r.Id);
|
||||
Object.DestroyImmediate(so);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Default_IsEmpty()
|
||||
{
|
||||
var r = default(AbilityRef);
|
||||
Assert.IsTrue(r.IsEmpty);
|
||||
Assert.IsNull(r.Id);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AssetWins_WhenBothSet()
|
||||
{
|
||||
var so = ScriptableObject.CreateInstance<EnemyAbilitySO>();
|
||||
so.abilityId = "asset_id";
|
||||
var r = new AbilityRef(so, "literal_id");
|
||||
Assert.AreEqual("asset_id", r.Id);
|
||||
Assert.IsTrue(r.HasConflict); // 供校验器报警告
|
||||
Object.DestroyImmediate(so);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30c3cfb4f5ff62f4691343a1ab594f7a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user