오늘의 학습 키워드
Raw Image, ScrollView
공부한 내용
캐릭터 UI에 띄우기
캐릭터를 UI에 띄우려고 하는데 저번에 업 스케일링해서 했던 것처럼 Canvas에 RawImage를 적용하는 방식으로 시도해봤다.
문제점 : UI 카메라에서 적용했던 것처럼 Flags를 Clear Depth로 하면 잔상이 남는다는 것이었다.
해결 : Raw Image를 넣는 카메라의 Flags를 Solid Color로 바꾸고 나니 UI 상에서 잔상이 사라졌다.
캐릭터 카메라를 띄우는 소스코드는 다음과 같다.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CharacterCamera : MonoBehaviour
{
private Camera _characterCamera;
[SerializeField] private Canvas characterCanvas;
private void Awake()
{
_characterCamera = GetComponent<Camera>();
}
private void Start()
{
CreateRT();
}
private void CreateRT()
{
RenderTexture rt = new RenderTexture(Screen.width, Screen.height, 24, RenderTextureFormat.Default);
rt.Create();
_characterCamera.targetTexture = rt;
RawImage raw = Instantiate(characterCanvas.gameObject).GetComponentInChildren<RawImage>();
raw.texture = _characterCamera.targetTexture;
}
}
관련 일지 :
https://jcdevelop98.tistory.com/331
스크롤 뷰 사이즈 자동화
문제점 : 스크롤 뷰에서 콘텐츠 사이즈를 수동으로 정해줄 때 개수가 늘어나거나 줄어든다면 사이즈도 다시 수동으로 바꿔줘야 한다는 것이 불편했다.
내가 구현한 방법 : 먼저 배열에 자식들을 담고 아이템들을 정렬하는 그룹인 Grid Layout Group의 요소들(간격)을 가져와 아이템 사이즈와 더했다. 그 이후 아이템의 열 개수 만큼(세로 스크롤) 사이즈를 늘려주도록 했다.
이후에 게임을 시작하면 사이즈에 맞게 Height가 조절된 것을 볼 수 있다.
private void InitItemArr()
{
int i = 0;
foreach (RectTransform trans in _inventoryRectTramsform)
{
itemArr[i] = trans.gameObject;
i++;
}
}
private void InitContentSize()
{
_totalItemSize = itemSpace + itemSize;
float initYSize = (itemArr.Length / initRowSize - initColumnSize) * _totalItemSize;
Vector2 sizeDelta = _inventoryRectTramsform.sizeDelta;
sizeDelta.y = initYSize;
_inventoryRectTramsform.sizeDelta = sizeDelta;
}
오늘의 회고
오늘부터 TextRPG UI에 대한 개인과제를 진행했다. MainUI와 StatusUI까지 구현을 끝내고 Inventory 구현을 하다가 말았는데 아마 오늘 작업보다 내일 작업이 더 많을 듯 싶다. 내 욕심으로썬 스크립터블 오브젝트까지 구현해서 데이터랑 연동하는 것까지 가능하다면 좋을 것 같은데 아마 과제 제출이 이미 끝난 상태에서 적용하지 않을까 싶다. 그래도 될 수 있는한 끝까지 열심히 해볼 생각이다.
오늘 할 게 많아서 무아지경 상태에서 한 것 같은데 내일도 이렇게만 집중해서 열심히 해보자. 파이팅!
'스파르타 Unity 1기' 카테고리의 다른 글
내일배움캠프 34일차 TIL - Status와 UI 연동 (0) | 2023.09.22 |
---|---|
내일배움캠프 33일차 TIL - ScriptableObject (0) | 2023.09.21 |
내일배움캠프 31일차 TIL - NavMesh.SamplePosition (0) | 2023.09.19 |
내일배움캠프 30일차 TIL - 낮과 밤 구현 해석, 1인칭 회전 (1) | 2023.09.18 |
내일배움캠프 29일차 TIL - Quaternion과 벡터의 곱셈, LayerMask, 연산자 우선순위 (0) | 2023.09.15 |