框架上传
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
using Stary.Evo;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Stary.Evo
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[ClassAPI("00.FluentAPI.Unity", "UnityEngine.Object", 0)]
|
||||
[APIDescriptionCN("针对 UnityEngine.Object 提供的链式扩展")]
|
||||
[APIDescriptionEN("The chain extension provided by UnityEngine.Object")]
|
||||
[APIExampleCode(@"
|
||||
var gameObject = new GameObject();
|
||||
//
|
||||
gameObject.Instantiate()
|
||||
.Name(""ExtensionExample"")
|
||||
.DestroySelf();
|
||||
//
|
||||
gameObject.Instantiate()
|
||||
.DestroySelfGracefully();
|
||||
//
|
||||
gameObject.Instantiate()
|
||||
.DestroySelfAfterDelay(1.0f);
|
||||
//
|
||||
gameObject.Instantiate()
|
||||
.DestroySelfAfterDelayGracefully(1.0f);
|
||||
//
|
||||
gameObject
|
||||
.Self(selfObj => Debug.Log(selfObj.name))
|
||||
.Name(""TestObj"")
|
||||
.Self(selfObj => Debug.Log(selfObj.name))
|
||||
.Name(""ExtensionExample"")
|
||||
.DontDestroyOnLoad();
|
||||
")]
|
||||
#endif
|
||||
public static class UnityEngineObjectExtension
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.37
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Instantiate(Object) 的简单链式封装")]
|
||||
[APIDescriptionEN("Object.Instantiate(Object) extension")]
|
||||
[APIExampleCode(@"
|
||||
prefab.Instantiate();
|
||||
")]
|
||||
#endif
|
||||
public static T Instantiate<T>(this T selfObj) where T : UnityEngine.Object
|
||||
{
|
||||
return UnityEngine.Object.Instantiate(selfObj);
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.38
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Instantiate(Object,Vector3,Quaternion) 的简单链式封装")]
|
||||
[APIDescriptionEN("Object.Instantiate(Object,Vector3,Quaternion) extension")]
|
||||
[APIExampleCode(@"
|
||||
prefab.Instantiate(Vector3.zero,Quaternion.identity);
|
||||
")]
|
||||
#endif
|
||||
public static T Instantiate<T>(this T selfObj, Vector3 position, Quaternion rotation)
|
||||
where T : UnityEngine.Object
|
||||
{
|
||||
return UnityEngine.Object.Instantiate(selfObj, position, rotation);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.39
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Instantiate(Object,Vector3,Quaternion,Transform parent) 的简单链式封装")]
|
||||
[APIDescriptionEN("Object.Instantiate(Object,Vector3,Quaternion,Transform parent) extension")]
|
||||
[APIExampleCode(@"
|
||||
prefab.Instantiate(Vector3.zero,Quaternion.identity,transformRoot);
|
||||
")]
|
||||
#endif
|
||||
public static T Instantiate<T>(
|
||||
this T selfObj,
|
||||
Vector3 position,
|
||||
Quaternion rotation,
|
||||
Transform parent)
|
||||
where T : UnityEngine.Object
|
||||
{
|
||||
return UnityEngine.Object.Instantiate(selfObj, position, rotation, parent);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.40
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Instantiate(Transform parent,bool worldPositionStays) 的简单链式封装")]
|
||||
[APIDescriptionEN("Object.Instantiate(Transform parent,bool worldPositionStays) extension")]
|
||||
[APIExampleCode(@"
|
||||
prefab.Instantiate(transformRoot,true);
|
||||
")]
|
||||
#endif
|
||||
public static T InstantiateWithParent<T>(this T selfObj, Transform parent, bool worldPositionStays)
|
||||
where T : UnityEngine.Object
|
||||
{
|
||||
return (T)UnityEngine.Object.Instantiate((UnityEngine.Object)selfObj, parent, worldPositionStays);
|
||||
}
|
||||
|
||||
public static T InstantiateWithParent<T>(this T selfObj, Component parent, bool worldPositionStays)
|
||||
where T : UnityEngine.Object
|
||||
{
|
||||
return (T)UnityEngine.Object.Instantiate((UnityEngine.Object)selfObj, parent.transform, worldPositionStays);
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.41
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Instantiate(Transform parent) 的简单链式封装")]
|
||||
[APIDescriptionEN("Object.Instantiate(Transform parent) extension")]
|
||||
[APIExampleCode(@"
|
||||
prefab.Instantiate(transformRoot);
|
||||
")]
|
||||
#endif
|
||||
public static T InstantiateWithParent<T>(this T selfObj, Transform parent) where T : UnityEngine.Object
|
||||
{
|
||||
return UnityEngine.Object.Instantiate(selfObj, parent, false);
|
||||
}
|
||||
|
||||
public static T InstantiateWithParent<T>(this T selfObj, Component parent) where T : UnityEngine.Object
|
||||
{
|
||||
return UnityEngine.Object.Instantiate(selfObj, parent.transform, false);
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.42
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("设置名字")]
|
||||
[APIDescriptionEN("set Object's name")]
|
||||
[APIExampleCode(@"
|
||||
scriptableObject.Name(""LevelData"");
|
||||
Debug.Log(scriptableObject.name);
|
||||
// LevelData
|
||||
")]
|
||||
#endif
|
||||
public static T Name<T>(this T selfObj, string name) where T : UnityEngine.Object
|
||||
{
|
||||
selfObj.name = name;
|
||||
return selfObj;
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.43
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Destroy(Object) 简单链式封装")]
|
||||
[APIDescriptionEN("Object.Destroy(Object) extension")]
|
||||
[APIExampleCode(@"
|
||||
new GameObject().DestroySelf()
|
||||
")]
|
||||
#endif
|
||||
public static void DestroySelf<T>(this T selfObj) where T : UnityEngine.Object
|
||||
{
|
||||
UnityEngine.Object.Destroy(selfObj);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.44
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Destroy(Object) 简单链式封装")]
|
||||
[APIDescriptionEN("Object.Destroy(Object) extension")]
|
||||
[APIExampleCode(@"
|
||||
GameObject gameObj = null;
|
||||
gameObj.DestroySelfGracefully();
|
||||
// not throw null exception
|
||||
// 这样写不会报异常(但是不好调试)
|
||||
")]
|
||||
#endif
|
||||
public static T DestroySelfGracefully<T>(this T selfObj) where T : UnityEngine.Object
|
||||
{
|
||||
if (selfObj)
|
||||
{
|
||||
UnityEngine.Object.Destroy(selfObj);
|
||||
}
|
||||
|
||||
return selfObj;
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.45
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Destroy(Object,float) 简单链式封装")]
|
||||
[APIDescriptionEN("Object.Destroy(Object,float) extension")]
|
||||
[APIExampleCode(@"
|
||||
new GameObject().DestroySelfAfterDelay(5);
|
||||
")]
|
||||
#endif
|
||||
public static T DestroySelfAfterDelay<T>(this T selfObj, float afterDelay) where T : UnityEngine.Object
|
||||
{
|
||||
UnityEngine.Object.Destroy(selfObj, afterDelay);
|
||||
return selfObj;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.46
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.Destroy(Object,float) 简单链式封装")]
|
||||
[APIDescriptionEN("Object.Destroy(Object,float) extension")]
|
||||
[APIExampleCode(@"
|
||||
GameObject gameObj = null;
|
||||
gameObj.DestroySelfAfterDelayGracefully(5);
|
||||
// not throw exception
|
||||
// 不会报异常
|
||||
")]
|
||||
#endif
|
||||
public static T DestroySelfAfterDelayGracefully<T>(this T selfObj, float delay) where T : UnityEngine.Object
|
||||
{
|
||||
if (selfObj)
|
||||
{
|
||||
UnityEngine.Object.Destroy(selfObj, delay);
|
||||
}
|
||||
|
||||
return selfObj;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.47
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("Object.DontDestroyOnLoad 简单链式封装")]
|
||||
[APIDescriptionEN("Object.DontDestroyOnLoad extension")]
|
||||
[APIExampleCode(@"
|
||||
new GameObject().DontDestroyOnLoad();
|
||||
")]
|
||||
#endif
|
||||
public static T DontDestroyOnLoad<T>(this T selfObj) where T : UnityEngine.Object
|
||||
{
|
||||
UnityEngine.Object.DontDestroyOnLoad(selfObj);
|
||||
return selfObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user