using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine.Internal;
using UnityEngineInternal;
namespace UnityEngine
{
public sealed class GameObject : Object
{
public extern bool isStatic
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
internal extern bool isStaticBatchable
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Transform 组件的接口
public extern Transform transform
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Rigidbody 组件的接口
public extern Rigidbody rigidbody
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Rigidbody2D 组件的接口
public extern Rigidbody2D rigidbody2D
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Camera 组件的接口
public extern Camera camera
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Light 组件的接口
public extern Light light
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Animation 组件的接口
public extern Animation animation
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得ConstantForce 组件的接口
public extern ConstantForce constantForce
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Renderer 组件的接口
public extern Renderer renderer
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得AudioSource 组件的接口
public extern AudioSource audio
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得GUIText 组件的接口
public extern GUIText guiText
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得NetworkView 组件的接口
public extern NetworkView networkView
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得GUIElement 组件的接口
[ Obsolete( "Please use guiTexture instead")]
public extern GUIElement guiElement
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得GUITexture组件的接口
public extern GUITexture guiTexture
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Collider 组件的接口
public extern Collider collider
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Collider2D 组件的接口
public extern Collider2D collider2D
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得ParticleEmitter 组件的接口
public extern ParticleEmitter particleEmitter
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得ParticleSystem 组件的接口
public extern ParticleSystem particleSystem
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
public extern int layer
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
[ Obsolete( "GameObject.active is obsolete. Use GameObject.SetActive(), GameObject.activeSelf or GameObject.activeInHierarchy.")]
public extern bool active
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
public extern bool activeSelf
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
public extern bool activeInHierarchy
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
public extern string tag
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
public GameObject gameObject
{
get
{
return this;
}
}
//构造函数
public GameObject( string name)
{
GameObject. Internal_CreateGameObject( this, name);
}
//构造函数
public GameObject()
{
GameObject. Internal_CreateGameObject( this, null);
}
//构造函数,并且添加一个组件
public GameObject( string name, params Type[] components)
{
GameObject. Internal_CreateGameObject( this, name);
for ( int i = 0; i < components.Length; i++)
{
Type componentType = components[i];
this. AddComponent(componentType);
}
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SampleAnimation(AnimationClip animation, float time);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject CreatePrimitive(PrimitiveType type);
[WrapperlessIcall, TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern Component GetComponent(Type type);
//获得组件
public T GetComponent<T>() where T : Component
{
return this. GetComponent( typeof(T)) as T;
}
public Component GetComponent( string type)
{
return this. GetComponentByName(type);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern Component GetComponentByName( string type);
[ TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
public Component GetComponentInChildren(Type type) //这个需要注意,是一个递归方法,从子节点查找组件,找到立即返回,如果最后都没有找到则返回空
{
if ( this.activeInHierarchy)
{
Component component = this. GetComponent(type);
if (component != null)
{
return component;
}
}
Transform transform = this.transform;
if (transform != null)
{
foreach (Transform transform2 in transform)
{
Component componentInChildren = transform2.gameObject. GetComponentInChildren(type);
if (componentInChildren != null)
{
return componentInChildren;
}
}
}
return null;
}
//调用了上面的方法
public T GetComponentInChildren<T>() where T : Component
{
return this. GetComponentInChildren( typeof(T)) as T;
}
if ( this.activeInHierarchy)
{
Component component = this. GetComponent(type);
if (component != null)
{
return component;
}
}
Transform parent = this.transform.parent;
if (parent != null)
{
while (parent != null)
{
if (parent.gameObject.activeInHierarchy)
{
Component component2 = parent.gameObject. GetComponent(type);
if (component2 != null)
{
return component2;
}
}
parent = parent.parent;
}
}
return null;
}
//同上
public T GetComponentInParent<T>() where T : Component
{
return this. GetComponentInParent( typeof(T)) as T;
}
//调用了外部方法,因为没有开源,只能根据名字来猜测,获得父节点以及以上节点中的指定组件,includeInactive是否包括非active成员,将这些组件放到result列表里
public void GetComponentsInParent<T>( bool includeInactive, List<T> results) where T : Component
{
this. GetComponentsForListInternal( typeof(T), typeof(T), true, includeInactive, true, results);
}
}
public T[] GetComponents<T>() where T : Component
{
return (T[]) this. GetComponentsInternal( typeof(T), true, false, true, false);
}
public void GetComponents(Type type, List<Component> results)
{
this. GetComponentsForListInternal(type, typeof(Component), false, true, false, results);
}
public void GetComponents<T>(List<T> results) where T : Component
{
this. GetComponentsForListInternal( typeof(T), typeof(T), false, true, false, results);
}
[ExcludeFromDocs]
public Component[] GetComponentsInChildren(Type type)
{
bool includeInactive = false;
return this. GetComponentsInChildren(type, includeInactive);
}
public Component[] GetComponentsInChildren(Type type, [ DefaultValue( "false")] bool includeInactive)
{
return this. GetComponentsInternal(type, false, true, includeInactive, false);
}
public T[] GetComponentsInChildren<T>( bool includeInactive) where T : Component
{
return (T[]) this. GetComponentsInternal( typeof(T), true, true, includeInactive, false);
}
public void GetComponentsInChildren<T>( bool includeInactive, List<T> results) where T : Component
{
this. GetComponentsForListInternal( typeof(T), typeof(T), true, includeInactive, false, results);
}
public T[] GetComponentsInChildren<T>() where T : Component
{
return this.GetComponentsInChildren<T>( false);
}
public void GetComponentsInChildren<T>(List<T> results) where T : Component
{
this.GetComponentsInChildren<T>( false, results);
}
[ExcludeFromDocs]
public Component[] GetComponentsInParent(Type type)
{
bool includeInactive = false;
return this. GetComponentsInParent(type, includeInactive);
}
public Component[] GetComponentsInParent(Type type, [ DefaultValue( "false")] bool includeInactive)
{
return this. GetComponentsInternal(type, false, true, includeInactive, true);
}
public T[] GetComponentsInParent<T>( bool includeInactive) where T : Component
{
return (T[]) this. GetComponentsInternal( typeof(T), true, true, includeInactive, true);
}
public T[] GetComponentsInParent<T>() where T : Component
{
return this.GetComponentsInParent<T>( false);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern void GetComponentsForListInternal(Type searchType, Type listElementType, bool recursive, bool includeInactive, bool reverse, object resultList);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern Component[] GetComponentsInternal(Type type, bool isGenericTypeArray, bool recursive, bool includeInactive, bool reverse);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SetActive( bool value);
[ Obsolete( "gameObject.SetActiveRecursively() is obsolete. Use GameObject.SetActive(), which is now inherited by children."), WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SetActiveRecursively( bool state);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern bool CompareTag( string tag);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject FindGameObjectWithTag( string tag);
//静态方法,全局查找tag对应的gameobject
public static GameObject FindWithTag( string tag)
{
return GameObject. FindGameObjectWithTag(tag);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject[] FindGameObjectsWithTag( string tag);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SendMessageUpwards( string methodName, [ DefaultValue( "null")] object value, [ DefaultValue( "SendMessageOptions.RequireReceiver")] SendMessageOptions options);
[ExcludeFromDocs]//触发该物体以及父物体的methodName方法
public void SendMessageUpwards( string methodName, object value)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
this. SendMessageUpwards(methodName, value, options);
}
[ExcludeFromDocs]//触发该物体以及父物体的methodName方法
public void SendMessageUpwards( string methodName)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
object value = null;
this. SendMessageUpwards(methodName, value, options);
}
public void SendMessageUpwards( string methodName, SendMessageOptions options)
{
this. SendMessageUpwards(methodName, null, options);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SendMessage( string methodName, [ DefaultValue( "null")] object value, [ DefaultValue( "SendMessageOptions.RequireReceiver")] SendMessageOptions options);
[ExcludeFromDocs]
public void SendMessage( string methodName, object value)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
this. SendMessage(methodName, value, options);
}
[ExcludeFromDocs]
public void SendMessage( string methodName)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
object value = null;
this. SendMessage(methodName, value, options);
}
public void SendMessage( string methodName, SendMessageOptions options)
{
this. SendMessage(methodName, null, options);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void BroadcastMessage( string methodName, [ DefaultValue( "null")] object parameter, [ DefaultValue( "SendMessageOptions.RequireReceiver")] SendMessageOptions options);
[ExcludeFromDocs]//跟 SendMessageUpwards相反,是触发该物体以及子物体methodName方法
public void BroadcastMessage( string methodName, object parameter)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
this. BroadcastMessage(methodName, parameter, options);
}
[ExcludeFromDocs]
public void BroadcastMessage( string methodName)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
object parameter = null;
this. BroadcastMessage(methodName, parameter, options);
}
public void BroadcastMessage( string methodName, SendMessageOptions options)
{
this. BroadcastMessage(methodName, null, options);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern Component AddComponent( string className);
//添加组件
[ TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
public Component AddComponent(Type componentType)
{
return this. Internal_AddComponentWithType(componentType);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern Component Internal_AddComponentWithType(Type componentType);
public T AddComponent<T>() where T : Component
{
return this. AddComponent( typeof(T)) as T;
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateGameObject([Writable] GameObject mono, string name);
[ Obsolete( "gameObject.PlayAnimation is not supported anymore. Use animation.Play"), WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void PlayAnimation(AnimationClip animation);
[ Obsolete( "gameObject.StopAnimation is not supported anymore. Use animation.Stop"), WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void StopAnimation();
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject Find( string name);
}
}
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine.Internal;
using UnityEngineInternal;
namespace UnityEngine
{
public sealed class GameObject : Object
{
public extern bool isStatic
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
internal extern bool isStaticBatchable
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Transform 组件的接口
public extern Transform transform
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Rigidbody 组件的接口
public extern Rigidbody rigidbody
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Rigidbody2D 组件的接口
public extern Rigidbody2D rigidbody2D
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Camera 组件的接口
public extern Camera camera
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Light 组件的接口
public extern Light light
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Animation 组件的接口
public extern Animation animation
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得ConstantForce 组件的接口
public extern ConstantForce constantForce
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Renderer 组件的接口
public extern Renderer renderer
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得AudioSource 组件的接口
public extern AudioSource audio
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得GUIText 组件的接口
public extern GUIText guiText
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得NetworkView 组件的接口
public extern NetworkView networkView
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得GUIElement 组件的接口
[ Obsolete( "Please use guiTexture instead")]
public extern GUIElement guiElement
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得GUITexture组件的接口
public extern GUITexture guiTexture
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Collider 组件的接口
public extern Collider collider
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得Collider2D 组件的接口
public extern Collider2D collider2D
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得ParticleEmitter 组件的接口
public extern ParticleEmitter particleEmitter
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
//提供了获得ParticleSystem 组件的接口
public extern ParticleSystem particleSystem
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
public extern int layer
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
[ Obsolete( "GameObject.active is obsolete. Use GameObject.SetActive(), GameObject.activeSelf or GameObject.activeInHierarchy.")]
public extern bool active
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
public extern bool activeSelf
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
public extern bool activeInHierarchy
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
}
public extern string tag
{
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
get;
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
set;
}
public GameObject gameObject
{
get
{
return this;
}
}
//构造函数
public GameObject( string name)
{
GameObject. Internal_CreateGameObject( this, name);
}
//构造函数
public GameObject()
{
GameObject. Internal_CreateGameObject( this, null);
}
//构造函数,并且添加一个组件
public GameObject( string name, params Type[] components)
{
GameObject. Internal_CreateGameObject( this, name);
for ( int i = 0; i < components.Length; i++)
{
Type componentType = components[i];
this. AddComponent(componentType);
}
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SampleAnimation(AnimationClip animation, float time);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject CreatePrimitive(PrimitiveType type);
[WrapperlessIcall, TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern Component GetComponent(Type type);
//获得组件
public T GetComponent<T>() where T : Component
{
return this. GetComponent( typeof(T)) as T;
}
public Component GetComponent( string type)
{
return this. GetComponentByName(type);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern Component GetComponentByName( string type);
[ TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
public Component GetComponentInChildren(Type type) //这个需要注意,是一个递归方法,从子节点查找组件,找到立即返回,如果最后都没有找到则返回空
{
if ( this.activeInHierarchy)
{
Component component = this. GetComponent(type);
if (component != null)
{
return component;
}
}
Transform transform = this.transform;
if (transform != null)
{
foreach (Transform transform2 in transform)
{
Component componentInChildren = transform2.gameObject. GetComponentInChildren(type);
if (componentInChildren != null)
{
return componentInChildren;
}
}
}
return null;
}
//调用了上面的方法
public T GetComponentInChildren<T>() where T : Component
{
return this. GetComponentInChildren( typeof(T)) as T;
}
[TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
//这个方法,优先从自己身上找到该组件,如果找不到则从父节点出发,将递归所有的父节点,如果所有父节点都没有,则返回空
public Component GetComponentInParent(Type type)
{if ( this.activeInHierarchy)
{
Component component = this. GetComponent(type);
if (component != null)
{
return component;
}
}
Transform parent = this.transform.parent;
if (parent != null)
{
while (parent != null)
{
if (parent.gameObject.activeInHierarchy)
{
Component component2 = parent.gameObject. GetComponent(type);
if (component2 != null)
{
return component2;
}
}
parent = parent.parent;
}
}
return null;
}
//同上
public T GetComponentInParent<T>() where T : Component
{
return this. GetComponentInParent( typeof(T)) as T;
}
//调用了外部方法,因为没有开源,只能根据名字来猜测,获得父节点以及以上节点中的指定组件,includeInactive是否包括非active成员,将这些组件放到result列表里
public void GetComponentsInParent<T>( bool includeInactive, List<T> results) where T : Component
{
this. GetComponentsForListInternal( typeof(T), typeof(T), true, includeInactive, true, results);
}
[CanConvertToFlash]
public Component[] GetComponents(Type type){
//GetComponentsInternal(Type type, bool isGenericTypeArray, bool recursive, bool includeInactive, bool reverse);
return this. GetComponentsInternal(type, false, false, true, false);}
public T[] GetComponents<T>() where T : Component
{
return (T[]) this. GetComponentsInternal( typeof(T), true, false, true, false);
}
public void GetComponents(Type type, List<Component> results)
{
this. GetComponentsForListInternal(type, typeof(Component), false, true, false, results);
}
public void GetComponents<T>(List<T> results) where T : Component
{
this. GetComponentsForListInternal( typeof(T), typeof(T), false, true, false, results);
}
[ExcludeFromDocs]
public Component[] GetComponentsInChildren(Type type)
{
bool includeInactive = false;
return this. GetComponentsInChildren(type, includeInactive);
}
public Component[] GetComponentsInChildren(Type type, [ DefaultValue( "false")] bool includeInactive)
{
return this. GetComponentsInternal(type, false, true, includeInactive, false);
}
public T[] GetComponentsInChildren<T>( bool includeInactive) where T : Component
{
return (T[]) this. GetComponentsInternal( typeof(T), true, true, includeInactive, false);
}
public void GetComponentsInChildren<T>( bool includeInactive, List<T> results) where T : Component
{
this. GetComponentsForListInternal( typeof(T), typeof(T), true, includeInactive, false, results);
}
public T[] GetComponentsInChildren<T>() where T : Component
{
return this.GetComponentsInChildren<T>( false);
}
public void GetComponentsInChildren<T>(List<T> results) where T : Component
{
this.GetComponentsInChildren<T>( false, results);
}
[ExcludeFromDocs]
public Component[] GetComponentsInParent(Type type)
{
bool includeInactive = false;
return this. GetComponentsInParent(type, includeInactive);
}
public Component[] GetComponentsInParent(Type type, [ DefaultValue( "false")] bool includeInactive)
{
return this. GetComponentsInternal(type, false, true, includeInactive, true);
}
public T[] GetComponentsInParent<T>( bool includeInactive) where T : Component
{
return (T[]) this. GetComponentsInternal( typeof(T), true, true, includeInactive, true);
}
public T[] GetComponentsInParent<T>() where T : Component
{
return this.GetComponentsInParent<T>( false);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern void GetComponentsForListInternal(Type searchType, Type listElementType, bool recursive, bool includeInactive, bool reverse, object resultList);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern Component[] GetComponentsInternal(Type type, bool isGenericTypeArray, bool recursive, bool includeInactive, bool reverse);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SetActive( bool value);
[ Obsolete( "gameObject.SetActiveRecursively() is obsolete. Use GameObject.SetActive(), which is now inherited by children."), WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SetActiveRecursively( bool state);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern bool CompareTag( string tag);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject FindGameObjectWithTag( string tag);
//静态方法,全局查找tag对应的gameobject
public static GameObject FindWithTag( string tag)
{
return GameObject. FindGameObjectWithTag(tag);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject[] FindGameObjectsWithTag( string tag);
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SendMessageUpwards( string methodName, [ DefaultValue( "null")] object value, [ DefaultValue( "SendMessageOptions.RequireReceiver")] SendMessageOptions options);
[ExcludeFromDocs]//触发该物体以及父物体的methodName方法
public void SendMessageUpwards( string methodName, object value)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
this. SendMessageUpwards(methodName, value, options);
}
[ExcludeFromDocs]//触发该物体以及父物体的methodName方法
public void SendMessageUpwards( string methodName)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
object value = null;
this. SendMessageUpwards(methodName, value, options);
}
public void SendMessageUpwards( string methodName, SendMessageOptions options)
{
this. SendMessageUpwards(methodName, null, options);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void SendMessage( string methodName, [ DefaultValue( "null")] object value, [ DefaultValue( "SendMessageOptions.RequireReceiver")] SendMessageOptions options);
[ExcludeFromDocs]
public void SendMessage( string methodName, object value)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
this. SendMessage(methodName, value, options);
}
[ExcludeFromDocs]
public void SendMessage( string methodName)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
object value = null;
this. SendMessage(methodName, value, options);
}
public void SendMessage( string methodName, SendMessageOptions options)
{
this. SendMessage(methodName, null, options);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void BroadcastMessage( string methodName, [ DefaultValue( "null")] object parameter, [ DefaultValue( "SendMessageOptions.RequireReceiver")] SendMessageOptions options);
[ExcludeFromDocs]//跟 SendMessageUpwards相反,是触发该物体以及子物体methodName方法
public void BroadcastMessage( string methodName, object parameter)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
this. BroadcastMessage(methodName, parameter, options);
}
[ExcludeFromDocs]
public void BroadcastMessage( string methodName)
{
SendMessageOptions options = SendMessageOptions.RequireReceiver;
object parameter = null;
this. BroadcastMessage(methodName, parameter, options);
}
public void BroadcastMessage( string methodName, SendMessageOptions options)
{
this. BroadcastMessage(methodName, null, options);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern Component AddComponent( string className);
//添加组件
[ TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
public Component AddComponent(Type componentType)
{
return this. Internal_AddComponentWithType(componentType);
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private extern Component Internal_AddComponentWithType(Type componentType);
public T AddComponent<T>() where T : Component
{
return this. AddComponent( typeof(T)) as T;
}
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateGameObject([Writable] GameObject mono, string name);
[ Obsolete( "gameObject.PlayAnimation is not supported anymore. Use animation.Play"), WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void PlayAnimation(AnimationClip animation);
[ Obsolete( "gameObject.StopAnimation is not supported anymore. Use animation.Stop"), WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public extern void StopAnimation();
[WrapperlessIcall]
[ MethodImpl(MethodImplOptions.InternalCall)]
public static extern GameObject Find( string name);
}
}