Я создаю что-то вроде художественной программы/игры в Unity, однако мне нужно создать палитру цветов для художников, которые создают в ней что-то. Я использую систему пользовательского интерфейса NGUI и создал базовый спрайт с набором цветов, а также пользовательским вводом цвета.
Однако точно выбрать один из этих цветов оказывается непросто.
Сейчас я делаю это так:
Код: Выделить всё
IEnumerator CaptureTempArea()
{
yield return new WaitForEndOfFrame();
tex = new Texture2D(Screen.width, Screen.height);
tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
tex.Apply();
Vector2 pos = UICamera.lastEventPosition;
int x = (int)pos.x;
int y = (int)pos.y;
Color color = tex.GetPixel(x, y);
Debug.Log(ColorToHex(color));
Debug.Log(tex.GetRawTextureData().Length / 1000);
Destroy(tex);
tex = null;
}
Однако должен быть лучший способ охватить — только — конкретную область. Однако это точно передает цвета. Но он также генерирует изображение (даже временное) размером от 2 до 8 МБ, прежде чем оно будет удалено из буфера. Учитывая конкретную систему пользовательского интерфейса, есть ли лучший способ создать палитру цветов или тот, который будет использовать меньше памяти?
Подробнее здесь:
https://stackoverflow.com/questions/391 ... p-and-ngui