본문 바로가기
개발/Unity

유니티 - 오브젝트를 선택된 상태로 만들기 : (1) bool

by 피로물든딸기 2022. 2. 25.
반응형

Unity 전체 링크

 

오브젝트를 선택된 상태로 만들기 : (1) bool
오브젝트를 선택된 상태로 만들기 : (2) 이미지로 만들기
오브젝트를 선택된 상태로 만들기 : (3) Shader Outline
오브젝트를 선택된 상태로 만들기 : (4) 오브젝트를 하나만 선택하기


화면에서 원하는 오브젝트로 RayCast를 보내는지 확인이 되었다면, 이제 오브젝트를 선택해보자.

블럭을 누르면 selected가 true로, 다시 누르면 false로 만들어보자.

 

먼저 Block에 selected 변수를 추가한다. 

처음은 선택되지 않은 상태 = false로 한다.

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

public class BlockMove : MonoBehaviour
{
    public bool selected = false;

	...
}

 

클릭을 한 번 할 경우에 오브젝를 선택할 수 있도록 아래와 같은 함수를 만들어서 Update에 추가한다.

GetMouseButtonDown은 클릭 한 번을 감지한다.

selectObject에서 hit을 구한 후, 위의 스크립트 <BlockMove>를 얻을 수 있다면, selected 상태를 변경한다.

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

public class SelectTest : MonoBehaviour
{
    private RaycastHit hit;

    void Update()
    {
        if (Input.GetMouseButtonDown(0)) selectObject();

        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Debug.DrawRay(ray.origin, ray.direction * 1000, Color.blue);
        }
    }

    void selectObject()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit))
        {
            string objectName = hit.collider.gameObject.name;
            Debug.Log(objectName);

            BlockMove block = hit.transform.GetComponent<BlockMove>();
            if (block == null) return;

			block.selected = !block.selected;
            Debug.Log(block.selected);
        }
    }
}

 

오브젝트를 클릭할 때마다 Selected가 변경된 것을 알 수 있다.

 

Selected의 상태에 따라 선택한 오브젝트의 색을 변경하거나 표시를 하면 된다.

 

이제 선택된 오브젝트를 Edge Detection Outline으로 강조해보자.

 

Unity Plus:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글