DanielDem 26 окт 2012, 19:03
Да, пожалуйста(пример из моего проекта):
А про методы расширения C# можно просто почитать в гугле
Используется csharp
//-----------------------------------------------------------------------------------------
/// <summary>
/// Статический класс реализующий методы расширений стандартных типов и типов Unity.
/// </summary>
//-----------------------------------------------------------------------------------------
public static class XCoreExtension
{
#region ======================== РАСШИРЕНИЕ ФУНКЦИОНАЛЬНОСТИ ТИПОВ ====================
//-------------------------------------------------------------------------------------
/// <summary>
/// Преобразование к 32-битному цветовому значению.
/// </summary>
/// <param name="rgba_color">Цвет в формате RGBA</param>
/// <returns>32-битное цветовое значение</returns>
//-------------------------------------------------------------------------------------
public static Color32 ToColor32(this Int32 rgba_color)
{
Color32 color_value = new Color32();
color_value.r = ((Byte)(rgba_color >> 24));
color_value.g = ((Byte)(rgba_color >> 16));
color_value.b = ((Byte)(rgba_color >> 8));
color_value.a = ((Byte)(rgba_color >> 0));
return (color_value);
}
//-------------------------------------------------------------------------------------
/// <summary>
/// Преобразование к цветовому значению.
/// </summary>
/// <param name="rgba_color">Цвет в формате RGBA</param>
/// <returns>Цветовое значение</returns>
//-------------------------------------------------------------------------------------
public static Color ToColor(this Int32 rgba_color)
{
const Single factor = 1.0f / 255.0f;
Color color_value = new Color();
color_value.r = factor * (Single)((Byte)(rgba_color >> 24));
color_value.g = factor * (Single)((Byte)(rgba_color >> 16));
color_value.b = factor * (Single)((Byte)(rgba_color >> 8));
color_value.a = factor * (Single)((Byte)(rgba_color >> 0));
return (color_value);
}
//-------------------------------------------------------------------------------------
/// <summary>
/// Преобразование к формату RGBA.
/// </summary>
/// <param name="color_value">32-битное цветовое значение</param>
/// <returns>Цвет в формате RGBA</returns>
//-------------------------------------------------------------------------------------
public static Int32 ToRGBA(this Color32 color_value)
{
return ((Int32)((color_value.r << 24) | (color_value.g << 16) | (color_value.b << 8) | color_value.a));
}
//-------------------------------------------------------------------------------------
/// <summary>
/// Преобразование к цветовому значению.
/// </summary>
/// <param name="color_value">32-битное цветовое значение</param>
/// <returns>Цветовое значение</returns>
//-------------------------------------------------------------------------------------
public static Color ToColor(this Color32 color_value)
{
const Single factor = 1.0f / 255.0f;
Color color = new Color();
color.r = (Single)(color_value.r) * factor;
color.g = (Single)(color_value.g) * factor;
color.b = (Single)(color_value.b) * factor;
color.a = (Single)(color_value.a) * factor;
return (color);
}
//-------------------------------------------------------------------------------------
/// <summary>
/// Преобразование к формату RGBA.
/// </summary>
/// <param name="color_value">Цветовое значение</param>
/// <returns>Цвет в формате RGBA</returns>
//-------------------------------------------------------------------------------------
public static Int32 ToRGBA(this Color color_value)
{
Int32 red = color_value.r >= 1.0f ? 0xff :
color_value.r <= 0.0f ? 0x00 : (Int32)(color_value.r * 255.0f + 0.5f);
Int32 green = color_value.g >= 1.0f ? 0xff :
color_value.g <= 0.0f ? 0x00 : (Int32)(color_value.g * 255.0f + 0.5f);
Int32 blue = color_value.b >= 1.0f ? 0xff :
color_value.b <= 0.0f ? 0x00 : (Int32)(color_value.b * 255.0f + 0.5f);
Int32 alpha = color_value.a >= 1.0f ? 0xff :
color_value.a <= 0.0f ? 0x00 : (Int32)(color_value.a * 255.0f + 0.5f);
return ((Int32)((red << 24) | (green << 16) | (blue << 8) | alpha));
}
//-------------------------------------------------------------------------------------
/// <summary>
/// Преобразование к 32-битному цветовому значению.
/// </summary>
/// <param name="color_value">Цветовое значение</param>
/// <returns>32-битное цветовое значение</returns>
//-------------------------------------------------------------------------------------
public static Color32 ToColor32(this Color color_value)
{
const Single factor = 255.0f;
Color32 color = new Color32();
color.r = (Byte)((color_value.r) * factor);
color.g = (Byte)((color_value.g) * factor);
color.b = (Byte)((color_value.b) * factor);
color.a = (Byte)((color_value.a) * factor);
return (color);
}
//-------------------------------------------------------------------------------------
/// <summary>
/// Получение макимальной длины стороны ограничивающего объема.
/// </summary>
/// <param name="bounds">Ограничивающий объем</param>
/// <returns>Максимальная длина строны</returns>
//-------------------------------------------------------------------------------------
public static Single GetMaxExtents(this Bounds bounds)
{
if (bounds.extents.x >= bounds.extents.y && bounds.extents.x >= bounds.extents.z)
{
return (bounds.extents.x);
}
else
{
if (bounds.extents.y >= bounds.extents.x && bounds.extents.y >= bounds.extents.z)
{
return (bounds.extents.y);
}
else
{
return (bounds.extents.z);
}
}
}
}
Да прибудет с Вами сила...