Programming/Unity C#

[Unity2D] 체스 개발 일지 - 0.5

LittleDev0617 2021. 2. 17. 18:40

체스 기물들 움직임 구현은 충분한 구상이 이루어진 다음에 짜야 할 것 같다.

괜히 먼저 짰다가 코드가 뒤죽박죽일 것 같으니

오늘은 간단하게 체스 Cell 마다 마우스가 올려져있을 때 색 변경 기능을 추가하였다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Cell : MonoBehaviour
{
    public Color Light { get; } = new Color(255 / 255f, 206 / 255f, 162 / 255f);
    public Color Dark { get; } = new Color(210 / 255f, 138 / 255f, 71 / 255f);
    public Color Over { get; } = new Color(168 / 255f, 110 / 255f, 56 / 255f);

    private Color Back;
    private bool IsClick = false;
    private void SaveColor()
    {
        if (GetComponent<Image>().color != Color.white)
            Back = GetComponent<Image>().color;
    }
    
    public void SetColor(Color color)
    {
        if (IsClick) return;
        SaveColor();
        GetComponent<Image>().color = color;
    }
    public void SetColor(string color)
    {
        if (IsClick) return;
        if (color != "Back") SaveColor();
        //Debug.Log($"{Back.r * 255},{Back.g * 255},{Back.b * 255}");
        if (color == "Dark")
            GetComponent<Image>().color = Dark;
        else if (color == "Light")
            GetComponent<Image>().color = Light;
        else if (color == "Over")
            GetComponent<Image>().color = Over;
        else if (color == "Back")
            GetComponent<Image>().color = Back;
    }
    public void Click()
    {
        IsClick = true;
        gameObject.transform.SetSiblingIndex(GameObject.Find("Board").transform.childCount - 1);
    }

    private void Update()
    {
        if(IsClick)
        {
            transform.GetChild(0).position = Input.mousePosition;
        }
    }
}

 

 


짧은 30분동안 짜면서 생긴 작은 문제가 있었다.

(문제라고 하기에도 뭐한)

캔버스 UI를 맨 위로 보내야하는 이슈였다.

캔버스에서의 오브젝트들은 하이라키뷰에서 봤을때 가장 밑에 있는 놈이 맨 위에 보이게 된다.

만약 가장위의 기물을 클릭하면 기물이 마우스를 따라가는데, 그 밑의 Cell에 가려져서 안보이게 된다.

gameObject.transform.SetSiblingIndex(GameObject.Find("Board").transform.childCount - 1);

그래서 위와같은 코드를 Click 함수에 추가해줌으로서 클릭한 기물을(정확히는 기물의 부모인 Cell)

Board의 자식중에서 가장 밑으로 인덱스를 설정해준다.

White 비숍을 클릭하니 맨 밑으로 온 것을 볼 수 있다.

'Programming > Unity C#' 카테고리의 다른 글

[Unity2D] 체스 개발 일지 - 0  (0) 2021.02.17