Показать сообщение отдельно
Старый 25.06.2012, 01:22   #391
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Когда-то пытался написать окошко с выбором текстуры как в TerrainEditor.
Теперь смог написать))
Кнопки хорошо масштабируется и автоматически переносится на новую строку.
private static int SelectionSpriteGrid(int selected, XAtlas atlas, int approxSize) {
		Texture texture = atlas.GetMaterial().mainTexture;
		List<XSprite> sprites = atlas.GetSprites();
		
		const int yIndent = 5;
		int xCount = Screen.width / approxSize;
		
		GUILayout.BeginVertical("box");
		for(int i=0; i<sprites.Count;) {
			GUILayout.BeginHorizontal();
			for(int x=0; x<xCount; x++, i++) {
				Rect itemRect = GUILayoutUtility.GetAspectRect((float)approxSize/(approxSize+yIndent));
				if(i >= sprites.Count) continue;
				
				if(selected == i) {
					Rect selectRect = new Rect(itemRect.x+1, itemRect.yMax-yIndent, itemRect.width-2, yIndent);
					Color color = new Color(0.23f, 0.5f, 0.99f, 1f);
					DrawRect(selectRect, color);
				}
				
				itemRect.xMin += 1;
				itemRect.xMax -= 1;
				itemRect.yMin += 1;
				itemRect.yMax -= 1+yIndent;
				if(Event.current.type == EventType.MouseDown && itemRect.Contains(Event.current.mousePosition)) {
					selected = i;
					GUI.changed = true;
				}
				GUI.DrawTextureWithTexCoords(itemRect, texture, sprites[i].GetFixedRect());
			}
			GUILayout.EndHorizontal();
		}
		
		GUILayout.EndVertical();
		return selected;
	}
	
	private static void DrawRect(Rect rect, Color color) {
		Vector3 a = new Vector3(rect.xMin, rect.yMin, 0);
		Vector3 b = new Vector3(rect.xMax, rect.yMin, 0);
		Vector3 c = new Vector3(rect.xMax, rect.yMax, 0);
		Vector3 d = new Vector3(rect.xMin, rect.yMax, 0);
		
		GL.Color(color);
		GL.Begin(GL.TRIANGLES);
		GL.Vertex(a);
		GL.Vertex(b);
		GL.Vertex(c);
		GL.Vertex(c);
		GL.Vertex(d);
		GL.Vertex(a);
		GL.End();
	}
Только данный код для моих спрайтов, но переделать будет легко.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 854
Размер:	12.1 Кб
ID:	17091  
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
cahekp (25.06.2012)