달력

62024  이전 다음

  • 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

Time.time.ToString 소수점 설정하기


소수점 설정은 의외로 간단 합니다.


ToString 괄호 안에 "N2" 만 넣어주면 됩니다.


예시)

 GUI.TextArea(new Rect(100, 50, 100, 30), "타이머 : " + Time.time.ToString("N2"));


소수점 2자리까지 나옴.


N1 = 소수점 한자리

N2 = 소수점 두자리

N3 = 소수점 세자리




Posted by JakeGD
|

인터프리터와 컴파일러



프로그램들을 실행하는 데에는 두 가지 방법이 있습니다.

가장 일반적인 방법은 프로그램을 컴파일 하는 것이고 다른 하나는 프로그램을 인터프리터에 통과시키는 방법 입니다.



  • 인터프리터
    • interpreter (해석기)는 프로그래밍 언어의 소스 코드를 바로 실행하는 방식입니다.
    • 고급 언어로 작성된 명령어들은 한번에 한 줄씩 읽어들여서 실행하는 프로그램이다.
    • 장점
      1. 기계어 명령어들이 만들어지는 컴파일 단계를 거칠 필요가 없다.
      2. 커파일 과정은 프로그램 크기가 크면 상당한 시간이 걸리지만 인터프리터는 즉시 실행 가능
    • 단점
      1. 컴파일이 끝난 프로그램의 속도 차이는 뒤쳐진다.
      2. 프로그램이 직접 실행 되므로 실행 프로그램이 따로 생성 되진 않습니다.


  • 컴파일러
    • compiler(해석기, 번역기)는 한마디로 사람이 읽을 수 있는 프로그램 언어에서 사람이 읽을 수 없고 컴퓨터가 읽을 수 있는 기계어,어셈블리어 로 번역 해주는 번역기라고 보면된다.
    • 인터프리터와 달리 즉시 실행은 못하지만 컴파일러 이후의 실행 속도가 빠릅니다.


Posted by JakeGD
|

Update, FixedUpdate, LateUpdate 차이점



  • Update()
    • Update는 프레임마다 한번씩만 호출이 되는 기본적인 업데이트 입니다.

  • FixedUpdate()
    • FixedUpdate는 Update보다 자주 호출이 되는 경우가 있습니다.
    • 프레임 속도가 낮을 경우 프레임마다 여러번 호출이 가능합니다.
    • 프레임 속도가 높을 경우 프레임마다 호출을 할 수 없습니다.
    • FixedUpdate 직후에 모든 물리적 특성 계산 및 업데이트가 발생하므로 이동 계산을 적용 할때 Time.DeltaTime 값을 곱할 필요가 없습니다.
    • 독립된 업데이트 이므로 모두 영향을 받는 update와 달리 어떤것이든 동일한 주기로 업데이트 영향을 받는다.
    •  물리적용시 사용하면 좋습니다.

  • LateUpdate()
    • LateUpdate는 Update 후 프레임마다 한번씩 호출이 됩니다.
    • update에서 계산이 완료되면 해당 LateUpdate가 실행이 됩니다.
    • 특정 행동이 완전히 끝난 후 실행하고 싶은 행동이 있다면 해당 LateUpdate를 이용하는 것이 좋습니다.
    • 예로 들어 3인칭 카메라가 캐릭터를 따라 움직일시 update에서 캐릭터 이동 방향 계산이 끝난 후 카메라에 대한 계산은 LateUpdate에서 행동을 취하시면 됩니다.


Posted by JakeGD
|

Ray 사용법!


  • 필요한 변수

float distance;    -> 레이의 길이

RaycastHit rayHit;    -> Ray가 맞았다는걸 알려주는 변수

Ray ray;    -> 사용될 레이 변수



void Start () 

{

ray = new Ray();       -> new를 이용하여 레이를 하나 생성합니다.

ray.origin = this.transform.position;    -> 레이위치를 사용될 오브젝트위치에 적용합니다.

ray.direction = this.transform.forward;    -> 레이 방향을 사용될 오브젝트 방향으로 초기화 해줍니다.

}


팁 // 만약 실시간으로 값을 받고 싶다면 ray.origin과 ray.direction을 Update 메소드에 넣어주시면 됩니다.



레이와 오브젝트의 충돌함수는 아래와 같습니다.


if (Physics.Raycast(ray.origin, ray.direction, out rayHit, distance))

// 순서대로 레이의시작위치 / 레이의 방향 / 레이충돌 반환 / 레이 길이값

{

// 해당 위치에서 조건에 대한 코드를 작성하시면 됩니다.


Debug.Log(rayHit.collider.gameObject.name); // 충돌된 오브젝트 이름 디버그 로그로 출력

}


로그 확인 방법은 유니티에서 ctrl + shift + C 를 누르시면 나옵니다.



자 그렇다면 레이가 잘 발사되고 있는지 확인을 해보고 싶으시죠?


그러면 void OnDrawGizmos() 메소드를 이용하여 렌더를 해줍니다.


void OnDrawGizmos()

{

        Debug.DrawRay(ray.origin, ray.direction * distance, Color.red);

// 이와같이 Debug로 그려주시면 실제 게임에서는 표시되지 않고 디버그 모드에서만 설정된 

// 레드컬러로 레이가 발사 되는것을 확인 하실 수 있습니다.

}



아래 레이가 적용된 예시 화면


Posted by JakeGD
|

유니티에서 스크립트 에디터 변경하기


변경 경로

  • 유니티 좌측 상단 Edit -> Preference -> External Tools ->External Script Editor -> 원하는 에디터 선택


↓↓↓↓↓↓↓↓↓↓ 이해가 안가신다면! ↓↓↓↓↓↓↓↓↓↓



유니티의 좌측 상단 Edit 선택





Edit 리스트 중 Preferences... 선택




그럼 아래의 그림같이 Unity Preferences 창이 하나 등장 합니다.



1. External Tools 클릭

2. External Script Editor 에서 원하는 에디터 선택





짝짝짝! 


수고하셨습니다.!


Posted by JakeGD
|

C# 배열 사용법

C# 2017. 11. 30. 13:05

C#의 배열 사용법


  • 배열 형식
    • 데이터 형식[] 배열 이름 = new 데이터형식[용량]


  • 배열 초기화에는 3가지 방식이 존재 합니다.
    1.  int[] array = new int[3] {1, 2, 3};   - 배열의 용량을 명시
    2.  int[] array = new int[] {1, 2, 3};    - 배열의 용량 생략
    3.  int[] array = {1, 2, 3};


  • 2차원 배열 사용법
    • int[ , ]   -   대괄호[] 안에 콤마(,) 하나를 넣어주면 2차원배열이 됩니다.

자 그럼 3차원 배열도 예상이 가시죠?


  • 3차원 배열 사용법
    • int[ , , ]   -   대괄호[] 안에 콤마(,) 두개를 넣어주면 3차원 배열이 됩니다.

지금까지의 배열은 가로 세로가 정확한 배열이였지만 
정확하지 않은 배열은 어떻게 해야할까요?

가변 배열이라는 것이 존재합니다.


  • 가변 배열 사용법
    • 데이터형식[][] 배열이름 = new 데이터형식[가변배열용량][]
    • 사용법) int[][] jagged = new int[3][]
      1. jagged[0] = new int[5]{1, 2, 3, 4, 5}
      2. jagged[1] = new int[]{10, 20, 30}
      3. jagged[2] = new int[]{100, 200}


Posted by JakeGD
|