private void OnGUI() { Vector3 p = Camera.main.WorldToScreenPoint(SpawnObject.transform.position); Vector3 e = Camera.main.WorldToScreenPoint(SpawnEndObject.transform.position); p.y = Screen.height - p.y; e.y = Screen.height - e.y; if (state == ShowDeckState) { int fullItemWidth = BigSize + Spacing; float scaledBigFrameOffsetX = Scale(14) * BigScale; float scaledBigFrameOffsetY = Scale(13) * BigScale; float scaledBigFrameWidth = BigSize + (Scale(30) * BigScale); float scaledBigFrameHeight = BigSize + (Scale(27) * BigScale); float scaledSmallFrameOffsetX = Scale(5) * SmallScale; float scaledSmallFrameOffsetY = Scale(5) * SmallScale; float scaledSmallFrameWidth = SmallSize + (Scale(10) * SmallScale); float scaledSmallFrameHeight = SmallSize + (Scale(9) * SmallScale); float width = (fullItemWidth * size) + p.x + (Screen.width - e.x - Spacing); scrollViewVector = GUI.BeginScrollView(new Rect(0, p.y - 20, Screen.width, scaledBigFrameHeight + Scale(25)), scrollViewVector, new Rect(0, 0, width, scaledBigFrameHeight)); p.y = 10; float firstImageOffsetY = p.y + (Scale(7) * BigScale); float secondImageOffsetY = p.y + SmallSize + (Scale(13 + 7) * BigScale); p.x -= scaledBigFrameOffsetX - scaledSmallFrameOffsetX; int imageIndex = 0; for (int i = 0; i < size; ++i) { ScaleMode scaleMode = ScaleMode.ScaleAndCrop; Rect imageRect = CalculatePosition(p, p.y, scaledBigFrameWidth + 200); GUI.BeginGroup(imageRect); GUI.DrawTexture(new Rect(scaledBigFrameOffsetX, scaledBigFrameOffsetY, BigSize, BigSize), textures[imageIndex], scaleMode); GUI.DrawTexture(new Rect(0, 0, scaledBigFrameWidth, scaledBigFrameHeight), FrameObject, ScaleMode.StretchToFill); ++imageIndex; float x = scaledBigFrameOffsetX - Scale(9); GUI.DrawTexture(new Rect(x, firstImageOffsetY, SmallSize, SmallSize), textures[imageIndex], scaleMode); GUI.DrawTexture(new Rect(x - scaledSmallFrameOffsetX, firstImageOffsetY - scaledSmallFrameOffsetY, scaledSmallFrameWidth, scaledSmallFrameHeight), FrameObject, ScaleMode.StretchToFill); ++imageIndex; GUI.DrawTexture(new Rect(x, secondImageOffsetY, SmallSize, SmallSize), textures[imageIndex], scaleMode); GUI.DrawTexture(new Rect(x - scaledSmallFrameOffsetX, secondImageOffsetY - scaledSmallFrameOffsetY, scaledSmallFrameWidth, scaledSmallFrameHeight), FrameObject, ScaleMode.StretchToFill); ++imageIndex; GroupControl groupControl = new GroupControl(); ImageViewWithFrame frame = new ImageViewWithFrame(); frame.BigSize = BigSize; frame.FrameTexture = FrameObject; frame.ImageTexture = textures[imageIndex]; frame.RightMargin = 30; frame.MeasureSize(); //frame.Render(); groupControl.Items.Add(frame); frame = new ImageViewWithFrame(); frame.BigSize = SmallSize; frame.FrameTexture = FrameObject; frame.ImageTexture = textures[imageIndex]; frame.LeftMargin = x - scaledSmallFrameOffsetX; frame.TopMargin = firstImageOffsetY - scaledSmallFrameOffsetY; frame.MeasureSize(); //frame.Render(); groupControl.Items.Add(frame); frame = new ImageViewWithFrame(); frame.BigSize = SmallSize; frame.FrameTexture = FrameObject; frame.ImageTexture = textures[imageIndex]; frame.LeftMargin = x - scaledSmallFrameOffsetX; frame.TopMargin = secondImageOffsetY - scaledSmallFrameOffsetY; frame.MeasureSize(); //frame.Render(); groupControl.Items.Add(frame); groupControl.Render(); GUI.EndGroup(); p.x += fullItemWidth; } GUI.EndScrollView(true); } if (Input.GetMouseButtonDown(0) && !isMousePressed && mouseTimeout <= 0) { mouseTimeout = 30; isMousePressed = true; MouseDown(); } else { isMousePressed = false; if (mouseTimeout > 0) { --mouseTimeout; } } }