오늘의 학습 키워드

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

 

내일배움캠프 23일차 TIL - UpScale Sampling

오늘의 학습 키워드 UpScale Sampling 공부한 내용 UpScale Sampling 업 스케일링 샘플링 : UI는 원래 해상도로 하고 3D 씬만 낮은 해상도로 렌더링 하는 방법 - 해상도를 줄이면 픽셀이 도드라져 게임 유저

jcdevelop98.tistory.com

 

 

스크롤 뷰 사이즈 자동화

문제점 : 스크롤 뷰에서 콘텐츠 사이즈를 수동으로 정해줄 때 개수가 늘어나거나 줄어든다면 사이즈도 다시 수동으로 바꿔줘야 한다는 것이 불편했다.

내가 구현한 방법 : 먼저 배열에 자식들을 담고 아이템들을 정렬하는 그룹인 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 구현을 하다가 말았는데 아마 오늘 작업보다 내일 작업이 더 많을 듯 싶다. 내 욕심으로썬 스크립터블 오브젝트까지 구현해서 데이터랑 연동하는 것까지 가능하다면 좋을 것 같은데 아마 과제 제출이 이미 끝난 상태에서 적용하지 않을까 싶다. 그래도 될 수 있는한 끝까지 열심히 해볼 생각이다.

 오늘 할 게 많아서 무아지경 상태에서 한 것 같은데 내일도 이렇게만 집중해서 열심히 해보자. 파이팅!

+ Recent posts