Skip to content

Instantly share code, notes, and snippets.

@baba-s
Created March 21, 2014 03:00
Show Gist options
  • Select an option

  • Save baba-s/9678648 to your computer and use it in GitHub Desktop.

Select an option

Save baba-s/9678648 to your computer and use it in GitHub Desktop.
using System;
using UnityEngine;
/// <summary>
/// Component型の拡張メソッドを管理するクラス
/// </summary>
public static partial class ComponentExtensions
{
/// <summary>
/// コンポーネントを追加します
/// </summary>
/// <typeparam name="T">追加するコンポーネントの型</typeparam>
/// <param name="component">Component型のインスタンス</param>
/// <returns>追加したコンポーネント</returns>
public static T AddComponent<T>(this Component component) where T : Component
{
return component.gameObject.AddComponent<T>();
}
/// <summary>
/// コンポーネントを追加します
/// </summary>
/// <param name="component">Component型のインスタンス</param>
/// <param name="className">追加するコンポーネントの名前</param>
/// <returns>追加したコンポーネント</returns>
public static Component AddComponent(this Component component, string className)
{
return component.gameObject.AddComponent(className);
}
/// <summary>
/// コンポーネントを追加します
/// </summary>
/// <param name="component">Component型のインスタンス</param>
/// <param name="componentType">追加するコンポーネントの種類</param>
/// <returns>追加したコンポーネント</returns>
public static Component AddComponent(this Component component, Type componentType)
{
return component.gameObject.AddComponent(componentType);
}
/// <summary>
/// コンポーネントを取得します。コンポーネントが存在しなければ追加してから取得します
/// </summary>
/// <typeparam name="T">取得するコンポーネントの型</typeparam>
/// <param name="component">Component型のインスタンス</param>
/// <returns>コンポーネント</returns>
public static T SafeGetComponent<T>(this Component component) where T : Component
{
return component.GetComponent<T>() ?? component.AddComponent<T>();
}
/// <summary>
/// コンポーネントを取得します。コンポーネントが存在しなければ追加してから取得します
/// </summary>
/// <param name="component">Component型のインスタンス</param>
/// <param name="className">取得するコンポーネントの名前</param>
/// <returns>コンポーネント</returns>
public static Component SafeGetComponent(this Component component, string className)
{
return component.GetComponent(className) ?? component.AddComponent(className);
}
/// <summary>
/// コンポーネントを取得します。コンポーネントが存在しなければ追加してから取得します
/// </summary>
/// <param name="component">Component型のインスタンス</param>
/// <param name="componentType">取得するコンポーネントの種類</param>
/// <returns>コンポーネント</returns>
public static Component SafeGetComponent(this Component component, Type componentType)
{
return component.GetComponent(componentType) ?? component.AddComponent(componentType);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment