달력

72024  이전 다음

  • 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

B라는 클래스가 A라는 클래스에 있는 변수 값들은 받아 조건을 새워야 하는상황이 올때가 있다.


그럼 C/C++ 처럼 B에 A를 선언 하여 사용 할 수 없을까?


있다!


사용예시)

public class SwordControl : MonoBehaviour {

    

    PlayerControl player;


    void Start ()

        {

        player = FindObjectOfType<PlayerControl>();

}

}


코드를 보면 PlayerControl 클래스를 SwordControl 클래스에 선언하여 사용한 방식이다.


PlayerControl 의 변수를 선언하고 선언한 변수에 FindObjectOfType<연결할클래스이름>(); 을 해주면 끝이다.


이 후 사용법언


player. 변수명 뒤 (.)을 넣어 사용하면 되겠다!


물론 public 선언된 변수만 사용이 가능하겠다!

Posted by JakeGD
|

순차 탐색(Linear Search)

    • 말 그대로 처음부터 끝까지 검색하는 알고리즘

간단한 알고리즘 코드)

#include <stdio.h>

#include <iostream>


int L_Search(int arr[], int length, int target) // 순차 알고리즘

{

for (int i = 0; i < length; i++)

{

if (arr[i] == target) // 대상 찾기

{

printf("저장할 타겟 : %d \n", i);

return i;

}

}

printf("탐색에 실패함 \n");

return 0;  // 못찾을시 -1 리턴


}


void main()

{

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int SearchIndex;


SearchIndex = L_Search(arr, sizeof(arr) / sizeof(int), 4);


SearchIndex = L_Search(arr, sizeof(arr) / sizeof(int), 11);


system("pause");

}

 



결과 화면)





Posted by JakeGD
|

간단한 코루틴(Coroutine) 사용법



  •  IEnumerator
    • 코루틴을 메소드 생성시 사용되는 반환 형식이며 yield return 구문을 포함하고 있어야 합니다.
    • yiedl return 행은 실행을 끝내고 다음 프레임에서 실행을 다시 재개할 수 있는 시점입니다.
    • 코루틴을 사용하려면 사용하고자 하는 구문에 StartCoroutine 함수를 이용합니다.

  • StartCoroutine
    • IEnumerator 형식으로 만들어진 코루틴 메소드를 실행하는 함수로 사용의 예로 특정키 입력시 또는 특정 값 도달시 시작되도록 할 수 있습니다.


사용 예시)  특정 물체를 일정 시간 마다 나타내기

 

void Start () {
        StartCoroutine(spawnWaves()); // spawnWaves라는 코루틴 함수 시작

        startWait = 3.0f;
        EnemyCount = 10;
        spawnWait = 2.0f;
    }

    IEnumerator spawnWaves()
    {
        yield return new WaitForSeconds(startWait);
// yield return 구문을 이용한 시간대기 함수(WaitForSeconds)
// 이러면 3초후 시작 이라는 의미

        while (true)
        {
                enemememy = EnemyStartPoint[UnityEngine.Random.Range(0, EnemyStartPoint.Length)];
                Instantiate(Enemy, enemememy.transform.position, enemememy.transform.rotation);
            yield return new WaitForSeconds(spawnWait);
// 2초마다 프리팹으로 만들어진 적들 소환

        }
    }



StartCoroutine 구문에서 spawnWaves() 로 호출해도 되지만 스트링 형식으로 "spawnWaves" 로 호출이 가능 합니다.

그리고 종료를 하고 싶다면 StopCoroutine을 이용해 StartCoroutin처럼 입력을 하면 해당 코루틴 함수가 멈춤니다.

또한가지 종료 방식이 있는데 StopAllCoroutines 함수로 실행되고 있는 모든 코루틴 함수를 종료 합니다.



Posted by JakeGD
|