카테고리 없음

20170711_게임오브젝트, 태그, 프리팹, 입력

Beabletoet 2017. 7. 11. 22:11

★ Scene 저장 : 컨트롤+S 를 누르거나 메뉴에서 File - Save Scene 선택


★ GameObject : 게임오브젝트는 컨테이너로, 다양한 컴포넌트를 저장하는 빈 상자라고 보면 됨. 문자, 소품, 풍경을 나타내는 유니티의 기본 객체.

체크에서 해제함으로써 게임 오브젝트를 비활성화 할 수도 있음.


★ Transform 컴포넌트 : 게임 오브젝트마다 모두 포함됨. 위치, 회전, 스케일을 정의함. 트랜스 컴포넌트가 없다면 사실상 게임에 존재하지 않고 메모리만 차지하는 셈. Parenting됨.

Position : X,Y,Z 좌표에서의 Transform 위치

Rotation : X,Y,Z 축 주변에서의 Transform 회전(단위 : 디그리)

Scale : X,Y,Z축을 따르는 Transform  스케일. 1이 원래 크기.


★ 컴포넌트 추가는 add component하면 가능함.

또는 메뉴에서 component 란에서 선택하여 생성.




★ 컴포넌트를 오른쪽 클릭하면 나오는 것들

Reset은 프로퍼티 값 초기화

remove는 컴포넌트 삭제.

move up, down은 효과 적용 순서 변경

copy paste는 뭐 그냥 그 뜻 그대로임



★부모 게임 오브젝트를 비활성화했을 때의 영향

부모 오브젝트 비활성화시 모든 자식 오브젝트의 activeSelf 설정도 비활성이 우선됨.(오버라이드)

즉, 부모 아래의 모든 계층이 비활성화 됨. 허나 자식의 activeSelf Property Value가 바뀐게 아님. 부모가 활성화되면 자식은 원래 상태로 복귀됨.



★태그 : 하나 이상의 게임오브젝트에 연결하는 단어. 태그의 목적은 게임오브젝트를 명확하게 스크립트에서 확인하는 것. GameObject.FindWithTag() 함수를 이용해 게임 오브젝트를 찾을 수 있음.


예제코드 : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using UnityEngine;
using System.Collections;
 
public class Example : MonoBehaviour 
{
    public GameObject respawnPrefab;
    public GameObject respawn;
    void Start() 
    {
        if (respawn == null)
            respawn = GameObject.FindWithTag("Respawn");
        Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation) as GameObject;
    }
}
cs



태그 적용은 인스펙터의 태그 항목에서 가능.

그 곳에서 Add Tag 옵션 선택시 태그 추가도 가능.



★ Static Game Object

오브젝트의 위치 변화로 인해 데이터 무효화가 일어날 일이 없다는 것을 보장

인스펙터 맨 우측 상단의 Static 체크박스와 메뉴가 존재.



★Prefab

여러 컴포넌트로 구성해 완성된, 재사용 가능한 게임오브젝트.

asset - create prefab 후, object를 비어있는 prefab으로 드래그하여 생성.

prefab의 인스펙터에는 select(선택), revert(되돌리기), apply(적용)가 존재.

프리팹은 복잡한 게임 오브젝트를 런타임(프로그램 실행 중)에 인스턴스화하려는 경우에 유용함.(https://docs.unity3d.com/kr/current/Manual/InstantiatingPrefabs.html)

아직 프리팹은 제대로 이해하기 어려우니 나중에 예제등을 실제로 돌려보며 꼭 이해해보고, 위 링크를 제대로 확인하고 시도해본 후 넘어가자.



★입력

키보드, 조이스틱, 게임 패드 입력을 지원.

가상 축과 버튼은 Input Manager로 생성.

Edit-Project Settings-Input 메뉴에서 각각의 축 설정을 변경할 수 있음.

해당 메뉴에서의 속성을 확인해보면

Name : 스크립트 상에서의 이 축의 문자열 변수명

descriptive Name : Standalone Build Configuration의 input 탭에 표시되는 양수 이름

descriptive Negative Name : Standalone Build Configuration의 input 탭에 표시되는 음수 이름

Negative Button : 음수 방향을 누르는 버튼

Positive Button : 양수 방향을 누르는 버튼

Alt Negative Button : 음수 방향 대체 버튼

Alt Positive Button : 양수 방향 대체 버튼

Gravity : 아무 버튼도 누르지 않은 경우 축이 중립이 될 때까지의 초당 단위 속도

Dead : 아날로그 데드 존 크기. 이 범위의 모든 아날로그 장치는 중립에 매핑됨

Sensitivity : 축이 대상의 값으로 향하기 위한 초당 단위 속도

Snap : 활성화하면 축의 값은 버튼을 반대 방향으로 눌렀을 때 0으로 재설정됨

Invert : 활성화하면 Negative Buttons는 양수 값과 양수의 역값을 제공

Axis : 제어하는 연결 장치의 축

Joy Num : 제어하는 연결된 조이스틱


스크립트에서는

1
value = Input.GetAxis("Horizontal");

cs

같은 식으로 값을 가져옴.

버튼 이름은 키 이름을 파지티브 버튼, 네거티브 버튼 속성에 입력해야 함.

키를 식별할 때에는

1
value = Input.GetKey ("a");

cs

사용



----------------


Working In Unity의 입력까지 함.