Home 유니티 정리노트
Post
Cancel

유니티 정리노트

Unity Summary note

1. 그룹형 변수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	string[ ] 변수명 = { "A" , "B", "C"  };

	 Debug.Log("맵F에 존재하는 몬스터");
	 Debug.Log( 변수명[0] );                  //  "A"출력
	 Debug.Log( 변수명[1] );                  // "B" 출력
	 Debug.Log( 변수명[2] );                  //  "C" 출력


	int[ ]  변수명 = new int[3];            // 3은 배열의 크기(길이)
	monsterLevel[0] = 1;
	monsterLevel[1] = 6;
	monsterLevel[2] = 20;

	Debug.Log("맵에 존재하는 몬스터의 레벨");
	Debug.Log( 변수명[0] );                                          // 1출력
	Debug.Log( 변수명[1] );                                          // 6출력
	Debug.Log( 변수명[2] );                                          // 20출력

	' ' '
    - 1차원 리스트
	    List<자료형타입> 변수이름 =  new List<자료형타입>();
    - 2차원 리스트(2 리스트)
       List<List<자료형타입>> 변수이름 = new List<List<자료형타입>>();
	' ' '
        List<string> items = new List<string>();    // 리스트

        items.Add("생명물약30");
	items.Add("마나물약30");

       items.Insert(idx, string)       // index위치의 string값을 추가
       items.Insert(idx, List)       // index위치의 List값을 추가

	Debug.Log("가지고있는 아이템");
	Debug.Log(items[0]);                                // 생명물약30 출력
	Debug.Log(items[1]);                               // 마나물약30 출력

	items.RemoveAt(index);                        // index위치의 값을 제거
제목내용설명
테스트1테스트2테스트3
테스트1테스트2테스트3
테스트1테스트2테스트3

2. 연산자와 비교연산자

(비교)연산자설명
+더하기
-빼기
*곱하기
/나누기
%나머지
&&and
!부정 연산자
l lor
A > BA가 B보다 큰
A >= BA가 B보다 크거나 같은
A < BA가 B보다 작은
A <= BA가 B보다 작거나 같은
A? B : CA값이 true면 B실행 아니라면 C실행


3. 비교 연산자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int fullLevel = 99;
int level = 90;
isFullLevel = level == fullLevel;
Debug.Log("용사는 만렙입니까?" + isFullLevel);   //False출력

bool isEndTutorial = level > 10;
    Debug.Log("튜토리얼이 끝난 용사입니까? " + isFullLevel);      // False출력

    int health = 30;
    int mana = 25;

    bool isBadCondition = health <= 50 || mana <= 20;
    Debug.Log("용사의 상태가 나쁩니까? " + isBadCondition);             // True출력

    bool isBadCondition = health <= 50 && mana <= 20;         // False출력
    Debug.Log("용사의 상태가 나쁩니까? " + isBadCondition);             // False 출력

    string condition = isBadCondition ? "나쁨" : "좋음"        // isBadCondition이 True이기때문에 나쁨출력


4. 조건문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    if (condition == "나쁨") {
        Debug.Log("플레이어 상태가 나쁘니 아이템을 사용하세요 ");
    }
    else {
        Debug.Log("플레이어 상태가 좋습니다.");
    }

    if (isBadCondition && items[0] == "생명물약30") {   // isBadCondition이 나쁨이고 아이템의 index의 0이 생명물약30이면
        items.RemoveAt(0);
        health += 30;
        Debug.Log("생명포션30을 사용하였습니다.");
    }

    if (isBadCondition && items[0] == "마나물약30") {   // isBadCondition이 나쁨이고 아이템의 index의 0이 마나물약30이면
        items.RemoveAt(0);
        mana += 30;
        Debug.Log("마나포션30을 사용하였습니다.")
    }

    switch (monsters[0]) {
        case "슬라임"
        case "사막뱀"      // 사막뱀 슬라임 둘다 소형몬스터에 분류
            Debug.Log("소형 몬스터가 출현!.");
            break;
        case "슬라임"
            Debug.Log("소형 몬스터가 출현!.");
            break;
        case "슬라임"
            Debug.Log("소형 몬스터가 출현!.");
            break;
        default:          // 모든 case문을 통과후 실행
            Debug.Log("??? 몬스터가 출현!.");
            break;
        }

5. 반복문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    ' ' '
    for (연산될 변수 ; 조건 ; 연산) {
            로직
        }
    ' ' '

    // 1
    for (int count = 0 ; count < 10 ; count++) {
        health++
        Debug.Log("붕대로 치료 중... " + health);
    }

    // 2
    for (int index = 0; index < monsters.Length; index++) {
        Debug.Log("이 지역에 있는 몬스터" + monsters[index]);
    }

    // 3
    foreach (string monster in monsters) {    // for x in a 랑 같은로직

    }

6. 함수

전역변수 : 함수 바깥에 선언된 변수 지역 변수 : 함수 안에서 선언된 변수

1
2
3
' ' '
자료형타입  함수명(자료형타입  변수명)
' ' '


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 1
int Heal(int currentHealth){
    Debug.Log("힐을 받았습니다. " + currentHealth);
    return currentHealth;
}
// 2
void Heal(){
    health += 10;
    Debug.Log("힐을 받았습니다. " + health);
}



// 전투결과를 알려주는 함수
string Battle(int monsterLevel){
    string result;
    if (level >= monsterLevel)
        result = "이겼습니다.";
    else
        result = "졌습니다.";
    return result;
}
for (int index = 0; index < monsters.length; index ++) {
    Debug.Log("용사는" + monsters[index] + "에게" +
                        Battle(monsterLevel[index]));
}


7. 클래스

class명 변수명 = new class명(); private : 외부 클래스에 비공개로 설정하는 접근자 public : 외부 클래스에 공개로 설정하는 접근자

8. Navigation

- Object

  1. Scene Filter
    • All : 모든 오브젝트를 보여줍니다
    • Mesh Renderers : Mesh Rendere 컴포넌트를 가지고있는 오브젝트만 보여줍니다
    • Terrains : Terrain 오브젝트만 보여줍니다.
  2. Object Name(Mesh Renderers Terrain)
    • Navigation Static = 네비게이션에 영향을받는 오브젝트로 설정
    • Generate OffMeshLinks : ?
    • Navigation Area : 선택된 오브젝트의 Area를 설정

- Bake

Agent Radius : NavMesh 위에서 움직일 대상(Agent)의 반지름값

2023-04-02 22 52 30 Radius : 1

2023-04-02 22 54 48 Radius : 0.5

Agent Height : Agent의 키

2023-04-02 22 58 26 Height : 2

2023-04-02 23 14 43 Height : 5

Max Slope 값 : NavMesh에 이동할 수 있는 길로 포함될 수 있는 경사로의 최대 각도

2023-04-02 23 34 23 Slope : 40

2023-04-02 23 37 44 Slope : 39

Step height : Agent가 올라갈 수 있는 오브젝트의 높이

2023-04-03 22 29 30 Step Height : 2

2023-04-03 22 30 56 Step Height : 0.3

Areas

Walkable과 비용 1인 Area와 Jump와 비용이 2인 각각의 다리가있을때 Agent는 가급적 비용이 적은 Walkable로 이동

2. Nav Mesh Agent

- Nave Mesh Agent

  • Base Offset : 캐릭터와 Agent의 위치를 맞추기위한 값

    - Steering

  • Speed : Agent가 움직이는 속도 값
  • Angular Speed : Agent가 회전하는 속도 값
  • Acceleration : 가속도 값
  • Stopping Distance : 목표와 어느정도 거리를 두고 멈출지 정하는 값
  • Auto Braking : 목표의 도착하기전에 감속을 할것인지 정하는 값

    - Obstacle Avoidance

  • Radius : 오브젝트의 Radius 충돌값을 조절
  • Height : 오브젝트의 Height 충돌값을 조절
  • Quality : 장애물 회피 품질
  • Priority : Agent간의 우선순위 (0 > 99)

    - Fath Finding

    -

  • Auto Repath : Navigation Mesh에 변동이 생겼을때 다시 길을 찾을것인지 설정하는 값
  • Area Mask : Area Mask

    3. Nav Mesh Obstacle

  • Shape : 장애물의 형태를 결정하는 옵션
  • Center : 장애물의 크기를 설정하는 옵션
  • Size : 장애물의 크기를 설정하는 옵션
  • Carve : 실시간으로 장애물의 지나갈수없는 영역을 설정
    • Move Threshold : 최소이동거리 (이 값보다 적게 이동하면 Carve를 새로 생성하지않음)
    • Time To Stationary : 오브젝트가 멈췄다고 판정하고 새로운 Carve를 새로 개선할지 판정하는 정지 시간
    • Carve Only Stationary : 정지한 상태에서만 Carve실행시킬건지 결정하는 값 – – – – – – – – – –

    ’ ‘ ‘ if (Input.함수명()) ‘ ‘ ‘

anyKeyDown : 아무 입력을 최초로 받을 때 True GetKeyDown : 지정된 키보드를 눌렀을때 GetKeyUp : 지정된 키보드에서 손을땟을때 GetKey : 지정된 키보드를 눌르고있을때

GetMouse : 마우스 버튼 입력을 받으면 True

GetMouseButtonDown(0) : 좌클릭을 했을때 // 0은 좌 1은 우 버튼 GetMouseButton(0) : 좌클릭을 눌르고있을때 GetMouseButtonUp(0) : 좌클릭을 땟을때

GetAxis : 수평, 수직 버튼 입력을 받으면 float x축 horizontal y축 vertical

GetButtonDown(“버튼명”) : (“버튼명”)을 눌렀을때 GetButtonUp(“버튼명”) : (“버튼명”)에서 손을땟을때 GetButton(“버튼명”) : (“버튼명”)을 눌르고있을때


Vector3함수들

  • 단순 등속 이동 MoveTowards(현재위치,목표위치,속도) : 현재위치에서 목표위치로 정해진속도로 일정하게 이동

  • 미끄러지듯이 감속 이동 SmoothDamp(현재위치, 목표위치, 참조 속도, 속도) : 현재위치에서 목표위치로 정해진속도로 부드럽게 이동 // 속도에 반비례하여 증가

  • 선형 보간 이동 Lerp(현재위치,목표위치,속도) : smoothdamp보다 감속시간이 김 // 속도에 비례하여 증가 (최댓값 1)
  • 구면 선형 보간 이동 SLerp (현재위치,목표위치,속도) : 포물선으로 이동

좌표

  • TransformDirection // Local -> World
  • InverseTransformDirection // World -> Local

Rotation

지정된 오브젝트를 회전시키는 방법 _yAngle += Time.deltaTime * _speed 1-1 // 절대 회전값 transform.eulerAngles = new Vecotr3(0.0f, _yAngle, 0.0f)

1-2 // +- delta transform.Rotate(new Vector3(00f, Time.deltaTime * 100.0f, 0.0f));

2 transform.rotation = Quaternion.Euler(new Vecotr(0.03, _yAngle, 0.0f));

3 transform.rotation = Quaternion.LookRotation(Vector3.[forward, back, right, left]);

4 transform.rotation = Quaternion.Slerp(transform..rotation[시작값], Quaternion.LookRotation(Vector3.forward), 1.0[0.1f~1.0f[speed]);


Quaternion

1
Quaternion.Euler(Vector3)    // Quaternion을 Euler angle로 바꾸어주는 함수 <br/>
1
2
transform.rotation = new Vector3(0,10,0);   == error
transform.rotation = Quaternion.Euler(0, 10, 0); == play


1
2
3
Quaternion.LookRotation(Vector3)
 // Vector3의 방향으로 바라보는 좌표로 만들어준다
(  Vector3 방향으로 바라본다)

Object Componant

  1. RigidBody : 중력의 영향을 받는다

    • Mass : 값이 커질수록 충돌이 무거워진다
    • Drag : 충돌 시 공기 저항의 크기
    • Angular Drag : 토크로 회전할 때 공기 저항의 크기 (0이면 공기 저항 없음)
    • Is Kinematic : 외부 물리 효과를 무시 ( 체크일 경우)

    • Interpolate
      • None : 아무것도 적용 안 함
      • Interpolate : 이전 프레임의 이동에 맞게 움직임을 부드럽게 처리함
      • Extrapolate : 다음 프레임을 추정해 움직임을 부드럽게 처리함
    • Collider : 물리효과를 받기 위한 컴포넌트
  2. PlayerControls

  • 정의 : 유저 input을 이용하여 플레이어 캐릭터를 제어하는 스크립트. (Input 시스템을 사용하여 키보드, 마우스등의 입력을 감지하고, 이를 이용하여 캐릭터를 움직이거나 상호작용할 수 있도록 도와줌)
  • 활용: NavMeshAgent컴포넌트와 함께 사용하여 플레이어 캐릭터의 이동을 내비게이션 매쉬 위에서 자동으로 처리하거나 Animator 컴포넌트와 함께 사용하여 캐릭터의 에니메이션을 제어하는등 다른 컴포넌트들과 함께 사용하여 더욱 다양한 기능을 구현할 수있음


| 메서드 | 설명 | | —– | ——- | | Enable() | InputAction을 활성화 | | Disable() | InputAction을 비활성화 | | OnMoveInput() | 플레이어의 이동 입력을 처리하는 메서드 (이동 방향에 대한 벡터 값을 받아와 처리) | | OnJumpInput() | 플레이어의 점프 입력을 처리하는 메서드 | | OnInteractInput() | 플레이어의 상호작용 입력을 처리하는 메서드 | | OnLookInput() | 플레이어의 시점 변환 입력을 처리하는 메서드(마우스나 조이스틱의 값을 받아와 시점을 변환) | ————————————————————————————————————————–

Rigidbody rigid ;

  • velocity : 현제 이동 속도
  • AddForce(Vec) : Vec의 방향과 크기로 힘을 줌
  • AddTorque(Vec) : Vec 방향을 축으로 회전력이 생김
  • ForceMode : 힘을 주는 방식 (가속, 무게 반영)

오브젝트 재질 접근

1
2
3
4
5
6
MeshRenderer mesh ;      # MeshRenderer mesh라는 변수를 생성
Material mat ;       # material mat이라는 변수를 생성

mesh = GetComponent<MeshRenderer>();
mat = mesh.material;
mat.color = new Color(숫자);          # 재질의 색상변경

물리충돌 이벤트

1
Collision : 충돌 정보 클래스 // 실제 물리적인 충돌로 발생하는 이벤트 - collision.gameobject.name == "object name" ; - OnCollisionEnter(Collision collision) : 물리적 충돌이 시작됬을 때 호출되는 함수 - OnCollisionStay(Collision collision) : 물리적 충돌이 지속될 때 호출되는 함수 - OnCollisionExit(Collision collision) : 물리적 충돌이 끝났을 때 호출되는 함수

// 지속적인 충돌로 발생하는 이벤트

  • other.name == “object name” ;
  • OnTriggerStay(Collider other) : collider에 계속 충돌할 때 호출되는 함수(즉 머물고 있을 때)

Ray

  • RayCast : 오브젝트 검색을 위해 Ray를 쏘는 방식 (처음 닿는 한오브젝트)
  • RayCastAll: 오브젝트 검색을 위해 Ray를 쏘는 방식 (모든 오브젝트)
  • DrawRay() : 에디터 상에서만 Ray를 그려주는 함수
  • RayCastHit : Ray에 닿은 오브젝트
  • LayerMast : 물리 효과를 구분하는 정수 값
  • distance : Ray에 닿았을 때의 거리

Camera

1
Camera.main : 메인카메라
  • Camera.main.ScreenToWorldPoint(Vector3 position) : Vector3 position의 스크린 좌표를 월드좌표로 바꿔준다
  • Camera.main.ScreendPointToRay(Vector3 position) : Vector3 position의 스크린 좌표를 Ray로 바꿔준다
  • Camera.main.nearClipPlane : Clipping Planes의 Near값

UI

  1. EventSystem
    • IBegineDragHandler : 이 스크립트가 붙은 오브젝트에다가 마우스 드래그를 시작 했을 때 호출
    • IDragHandler : 이 스크립트가 붙은 오브젝트에다가 마우스 드래그 중인 동안 계속 호출
    • IPointClickHandler : 마우스를 클릭했을때 호출
  2. Input Field
    • Input Field Setting
      • Font Asset, Point Size : InputField에 보여지는 폰트 에셋, 폰트 크기
  • CharacterLimit : InputField에 입력할 수 있는 문자 개수 제한 (0 = 무제한)

  • Content Type : InputField의 속성 설정으로 용도에 맞게 모바일 가상 키보 드 종류, 입력할 수 있는 문자 종류 등을 제한할 수 있다.

  • Line Type : InputField의 행 타입을 설정
    • single Line : 줄 바꿈이 없고, 엔터 키를 누르면 입력을 마친다.

    • Multi Line Submit : InputField의 가로 끝까지 문자열을 입력하며 줄 바꿈이되고 엔터키를 누르면 입력을 마친다.

    • Multi Line Newline : InputField의 가로 끝까지 문자열을 입력하면 줄 바꿈이 되고 엔터 키를 누르면 입력을 마친다.

  • Input Type : (Content Type이 Custom일 때 설정 가능) 입력 타입을 설정.

  • Keyboard Type : 모바일 기기에서 InputField를 사용할 때 표시되는 가상 키 보드 속성

  • Character Validation : InputField에 입력할 수 있는 문자 종류 제한
    • None : 입력할 수 있는 문제 제한 없음

    • Digit : 정수 표현 가능 (‘-‘ 기호 사용 불가)

    • Integer : 정수 표현 가능 (첫 칸에 ‘-‘기호 사용 가능)

    • Decimal : 소수점이 있는 숫자 표현 가능

    • Alphanumeric : 알파벳과 숫자 입력 가능

    • Name : 한글/영어 이름 입력 가능 (문자열의 첫 번째가 아니라면 공백 입력 가능, 알파벳의 경우 첫 문자와 공백 이후 첫 문자만 대 문자로 설정되고 낲머지는 모두 소문자로 설정된다.)

    • Regex : 정규식을 이용해 문자 유효성을 검사

    • Email Address : 이메일 입력(영어, 숫자, 일부 특수기호)

    • Custom Validator : TMP_InputValidator를 설정해 문자 제한

  • Placeholder : Text에 입력된 내용이 없을 때 출력되는 가이드 텍스트

  • Caret Blink Rate : Hide Mobile ㅡInput이 true일때 입력 필드에 표시되는 커서의 점멸 횟수

  • Selection Color : InputField에 작성된 문자열을 드래그 했을 때 선택된 문자열의 배경 색상

  • Control Setting
    • Hide Mobile Input : true로 설정되면 모바일 장치에서 InputField에 텍스트를 입력할 때 모바일에서 제공되는 보조 Input Field가 표시되지않는다.
  • InputField Component Event Method
    • On Value Changed (string) : InputField의 데이터에 변화가 있을 때

    • On End Edit(string) : (Line Type이 Single Line일 때) InputField에 데이터를 입력하고 엔터를 눌렀을 때

    • On Select(string) : InputField를 마우스 커서로 클릭해 활성화 했을 때

    • On Deselect(string) : 다른 곳을 클릭해 InputField를 비활성화 했을 때

- Content Type

image
image
image

  1. UI 텍스트 코드로 변환시키기
    • TextMeshPro일 경우 : TextMeshProUGUI 변수명; 변수명.text = 변환하고싶은 텍스트값;
    • Text일 경우 : Text 변수명; 변수명.text = 변환하고싶은 텍스트값;
  2. Reck Transform
    • Anchor : 부모기준 양쪽 끝 모서리, 상, 하, 좌, 우로 기준점 조정 React Tansform - Anchor Rect Transform - Anchor 2
    • Pivot : 오브젝트기준 양쪽 끝 모서리, 상, 하, 좌,우로 기준점 조정 Rect Transform - pivot React Tansform - Pivot 2

Stack

  • Push : 삽입
  • Pop : 가장 최근에 들어온 애를 꺼낸다
  • Peek : 가장 최근에 들어온 애를 리턴한다

gameObject.SetActive(falses) : 오브젝트 숨기기 transform.Rotate(Vector3.up * 속도 * time.deltatime, Space.World : 월드좌표를 기준으로 회전 transform.position = new Vector3(x, y, z); : x, y, z좌표로 순간이동


Scene

1
2
3
4
5
using UnityEngine.SceneManagement;
Scene scene = SceneManager.GetActiveScene();

int CurrentScene = scene.buildIndex;  :  현제씬의 인덱스 번호 저장
int NextScene = CurrentScene + 1;   :  현제씬 인덱스에 1추가( 다음씬)

Invoke

1
*주의* Update문에는 쓰지말것
  • Invoke(“함수명”, 지연시간(float)); : 지연시간후 함수실행

  • InvokeRepeating(함수명, 지연시간(float), 반복간격(float) : 지연시간 후 반복간격(즉 1초라면 1초간격으로)으로 계속 반복

  • CancelInvoke(“함수명”); : 함수의 실행을 종료


public 변수들

Transform 변수명 : 지정된 스크립트의 좌표값을 가져옴

GameObject 변수명 : 오브젝트를 지정

[SerializeField] 스크립트이름 변수명 : 스크립트를 지정

Vector3 변수명 : 좌표값을 지정

[Range(최솟값 ~ 최댓값)] public(private) float 변수명 : 슬라이스형태로 값을 바꿀수있음


LayerMask

LayerMask.GetMask(“Layer명”) : “ “의 레이어의 정보 가져온다 ex) LayerMask mask(변수명) = LayerMask.GetMask(“Monster(Layer명)”) = Monster의 레이어 정보를 mask의 저장

(1 « Layer의 순서) : 1에서 Layer순서값 만큼 bit shift(밀어준다)를 해준다 즉 Layer순서의 값


Layer

  1. Default
  2. TransparentFX
  3. Ignore Raycast 3.
  4. Water
  5. UI 6. 7. 8 Monster

9 Wall

ex) int mask(변수명) = (1 « 8) 1에서 8만큼 밀어준 8의레이어 Monster를 mast에 저장한다


(https://www.inflearn.com/course/mmorpg-%EC%9C%A0%EB%8B%88%ED%8B%B0/unit/35047?tab=curriculum 6분12초)

static (Script’s Name) Instance // 유일성이 보장된다 static (Script’s Name) GetInstance() { return Instance; } // 유일한 ( )를 가져온다


StringBuilder

  1. string Address = “서울특별시” + “ 중구” + “ 세종대로”

    StringBuilder sb = new StringBuilder(); sbAddress.Append(“서울특별시”); sbAddress.Append(“ 중구”); sbAddress.Append(“ 세종대로”); == 서울특별시중구세종대로

  2. sb.AppendLine(“서울특별시”); sb.AppendLine(“중구”); sb.AppendLine(“세종대로”); == 서울특별시 중구 세종대로

설명 블로그 url : t.ly/T0-L


PlayerControls

정의 : 유저 input을 이용하여 플레이어 캐릭터를 제어하는 스크립트. (Input 시스템을 사용하여 키보드, 마우스등의 입력을 감지하고, 이를 이용하여 캐릭터를 움직이거나 상호작용할 수 있도록 도와줌)

활용: NavMeshAgent컴포넌트와 함께 사용하여 플레이어 캐릭터의 이동을 내비게이션 매쉬 위에서 자동으로 처리하거나 Animator 컴포넌트와 함께 사용하여 캐릭터의 에니메이션을 제어하는등 다른 컴포넌트들과 함께 사용하여 더욱 다양한 기능을 구현할 수있음

메소드리턴 값설명
AddvoidParam에 데이터를 추가합니다.

Animation

  1. Animator.SetBool(“파라미터 이름”, bool) : “파라미터 이름” 파라미터의 bool값을 지정한 bool값으로 바꾸어준다

    Touch

  • Input.touchCount : 터치 이벤트가 발생한 터치의 개수를 반환

  • Input.GetTouch(0) : 현제 화면에서 첫 번째 손가락의 터치 입력에 대한 정보를 반환

  • Input.GetTouch(0).position : 첫 번째로 인식된 터치의 위치를 반환합니다.

  • Input.GetTouch(0).deltaPosition : 현재 프레임에서 이전 프레임의 터치 위치와의 차이를 나타내는 벡터
  • Input.GetTouch(0).phase : 현제 터치 상태를 나타내는 TouchPhase 열거형값 중 하나를 반환
  • TouchPhase | Method | 설명 | | —– | ——- | | Began(시작) | 손가락이 화면을 터치하는 그 순간 | | Moved(이동) | 손가락이 화면 위에서 터치한 상태로 이동하고 있는 상태 | | Stationary(대기) | 손가락이 화면을 터치했지만, 마지막 프레임에서 변화가 없는 상태 | | Ended(종료) | 손가락이 화면 위를 벗어나 떨어지게 되는 그 순간(터치가 끝난 상태) | | Canceled(취소) | 5개 이상의 터치 입력이 동시에 발생해서 시스템이 터치의 추적을 취소한 상태 | ————————————————————————————————————————–

State 패턴

선언

enum State명
{

}


2.

This post is licensed under CC BY 4.0 by the author.