사생활 보호 설정
https://gamjia.tistory.com
Updated News
Mini Rooms
답글수 [0]
What Friends Say
한마디로 표현해봐~
1촌평 관리
동전게임 개발일지 - 2
GamJia 2024. 1. 9. 00:05
동전게임 개발일지 2편하드코딩
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class FlexibleGridLayout : LayoutGroup { public int rows; public int columns; public Vector2 cellSize; public Vector2 spacing; public override void CalculateLayoutInputHorizontal() { base.CalculateLayoutInputHorizontal(); float parentWidth=rectTransform.rect.width; float parentHeight=rectTransform.rect.height; float cellWidth=parentWidth/rows; cellSize.x=cellWidth; cellSize.y=cellWidth; float spacingWidth=parentWidth/45f; float spacingHeight=(parentHeight-(cellWidth*rows))/rows+((Mathf.Sqrt(parentWidth/parentHeight)-(parentWidth/parentHeight))); spacing.x=spacingWidth; spacing.y=spacingHeight; padding.left = (int)(parentHeight / 100f); padding.right = padding.left; padding.top = padding.left; padding.bottom = padding.left; int columnCount=0; int rowCount=0; for(int i=0;i<rectChildren.Count;i++) { rowCount=i/columns; columnCount=i%columns; var item=rectChildren[i]; var xPos=(cellSize.x*columnCount)+(spacing.x*columnCount)+padding.left; var yPos=(cellSize.y*rowCount)+(spacing.y*rowCount)+padding.top; SetChildAlongAxis(item,0,xPos,cellSize.x); SetChildAlongAxis(item,1,yPos,cellSize.y); } } public override void CalculateLayoutInputVertical() { } public override void SetLayoutHorizontal() { } public override void SetLayoutVertical() { } }
일단 코드를 보기 전에이분 영상을 보면 이해가 좀 더 잘될거 같다 기존의 grid layout은 너무 맛이 없어서이분 코드를 좀 참고했다 물론 내 식대로 고치느라 하드코딩이 됐지만..https://www.youtube.com/watch?v=CGsEJToeXmA
화면 사이즈랑 상관 없이비율에 맞춰서 하얀 점박이들을일정 간격으로맛있게 띄우고 싶어서 코드를 썼다 물론 영상과는 다르게 이건행과 열을 내가 미리 정해뒀다..쩝.. 암튼 사진을 보면 알겠지만비율에 따라서 사이즈와 간격,사이즈에 따라서 padding이 정해졌다 사실 다른 내용은 크게 특별할건 없는데spacingHeight가 좀.. 길긴하다부모(불투명한 흰색)높이 - (하얀 네모 크기 * 행)에서행+( √(부모너비/부모높이))-(부모너비/부모높이)을 나눴다 행 저만큼을 더한 이유는 저래야바닥까지 잘 붙더라고... 햐햐햐