62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
using NBC;
|
|
using NBC.Asset;
|
|
using NBF.Utils;
|
|
using UnityEngine;
|
|
|
|
namespace NBF
|
|
{
|
|
public static class IConfigTableExtensions
|
|
{
|
|
public static string GetName(this IConfigTable config)
|
|
{
|
|
return config.Key.GetName();
|
|
}
|
|
|
|
public static string GetDesc(this IConfigTable config)
|
|
{
|
|
return config.Key.GetDesc();
|
|
}
|
|
|
|
public static string GetModelPath(this ItemConfig config)
|
|
{
|
|
return $"Assets/ResRaw/gfx/{config.Model}.prefab";
|
|
}
|
|
|
|
public static GameObject GetModelPrefab(this ItemConfig config)
|
|
{
|
|
return Assets.Load<GameObject>(config.GetModelPath());
|
|
}
|
|
|
|
public static GameObject Instantiate(this ItemConfig config, Transform parent, Vector3 position,
|
|
Quaternion rotation)
|
|
{
|
|
return Object.Instantiate(config.GetModelPrefab(), position, rotation, parent);
|
|
}
|
|
|
|
|
|
public static T InstantiateAndComponent<T>(this ItemConfig config, Transform parent, Vector3 position,
|
|
Quaternion rotation) where T : MonoBehaviour
|
|
{
|
|
var obj = config.Instantiate(parent, position, rotation);
|
|
var com = obj.GetComponent<T>();
|
|
if (com == null)
|
|
{
|
|
com = obj.AddComponent<T>();
|
|
}
|
|
|
|
return com;
|
|
}
|
|
|
|
public static T InstantiateAndComponent<T>(this ItemConfig config) where T : MonoBehaviour
|
|
{
|
|
var obj = Object.Instantiate(config.GetModelPrefab());
|
|
var com = obj.GetComponent<T>();
|
|
if (com == null)
|
|
{
|
|
com = obj.AddComponent<T>();
|
|
}
|
|
|
|
return com;
|
|
}
|
|
}
|
|
} |