SideProjects/[집필] 실전 유니티 C#

[실전 유니티 C#] 문자열 다루기

VirtualDever 2022. 5. 1. 15:43

지난 시간에 문자열은 문자들의 합쳐놓은 것이라고 배웠습니다.

문자는 char, 문자열은 string이라는 데이터 타입을 사용하는데요.

string은 자주 쓰이는 데이터 타입이니 조금 익숙해질 필요가 있겠습니다.

첫번째 시간에 저희가 콘솔 창에 문자열을 출력해 보았습니다.

여기서 조금만 더 발전해 나가 볼까요?

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

public class Player : MonoBehaviour {
  public int currentHP = 70;          // 현재 체력
  public const int maxHP = 100;       // 체력 max
  public string name;
  public string guildName;
  
  private void Start() {
    name = "용감한 용사";
    guildName = "[유니티용병단]";
  }
}

name과 guildName이라는 문자열 변수를 선언하였습니다.

그리고 Start() 메서드에서 name과 guildName에 위 코드와 같이 값을 할당했구요.

값을 할당한 것만으로는 아직 아무것도 할 수 없습니다.

하지만 컴퓨터에게는 "name이라는 변수에 "용감한 용사"라는 값을 저장한다"고 명령을 준 상태이지요.

이제 이 값을 유니티 콘솔창을 통해 출력해 봐야겠지요?

 

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

public class Player : MonoBehaviour {
  public int currentHP = 70;          // 현재 체력
  public const int maxHP = 100;       // 체력 max
  public string name;
  public string guildName;
  
  private void Start() {
    name = "용감한 용사";
    guildName = "[유니티용병단]";
    
    Debug.Log(guildName + name);
  }
}

Debug.Log() 메서드를 이용하면 유니티 콘솔 창에 문자열을 출력할 수 있습니다.

원래는 디버깅 용도로 쓰이는데 저희는 학습을 위해 자주 사용할 것입니다.

유니티로 돌아가서 올바른 값이 출력되는지 확인해 보겠습니다.

그러기 위해서는 유니티 에디터 상에서 Player 스크립트를 새로 만든 Player라는 게임오브젝트에 붙여야겠지요?

Main Camera에 붙어있던 NewBehaviourScript는 remove 하도록 하겠습니다.

빨간 박스로 표시된 스크립트의 우측 상단의 ... 버튼을 클릭하면 Remove Component 메뉴가 있습니다.

그리고 유니티 에디터의 상단 중앙에 있는 플레이 버튼을 클릭합니다.

플레이가 되면 Console 창에 아래와 같이 출력이 됩니다.

시간은 디폴트로 표시가 되고,

"[유니티용병단]용감한 용사"

라는 텍스트가 표시되는 것을 확인할 수 있었습니다.

여기서 우리는 문자열을 합쳐서 보여주기 위해서는 스크립트로 단순히 + 연산자를 사용하면 된다는 것을 알게 되었습니다.

 

name = "용감한 용사";
guildName = "[유니티용병단]";
    
Debug.Log(guildName + name);

어떤가요. 쉽고 명확하지 않나요?

이번에는 좀 더 어려운 것을 해보도록 하겠습니다.

현재 레벨을 나타내는 currentLevel 이라는 정수형 변수를 선언과 함께 1로 초기화하였습니다.

콘솔창에 현재 레벨을 표시하고 싶다고 한다면 어떻게 하면 될까요?

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

public class Player : MonoBehaviour {
  public int currentHP = 70;          // 현재 체력
  public const int maxHP = 100;       // 체력 max
  public string name;                 // 이름
  public string guildName;            // 길드 명
  public int currentLevel = 1;            // 현재 레벨
  
  private void Start() {
    name = "용감한 용사";
    guildName = "[유니티용병단]";
    
    Debug.Log(guildName + "Level" + currentLevel.ToString() + " " + name);
  }
}

조금 머리가 아파옵니다.

하지만 여기서 포기하진 마세요.

한 번 익히고 나면 그 다음부터는 쉽고 편해질테니까요.

+ 연산자는 문자열을 이어준다는 것을 잊지 않으셨지요?

그럼 위와 같이 작성하고 플레이 하면 어떻게 문자열이 출력될지 짐작해 봅시다.

힌트를 드리겠습니다.

변수 명도 사용 가능하고 바로 문자열 값을 사용해도 동일하게 출력됩니다.

ToString() 메서드는 어떤 자료 형이든 그것을 문자열로 변환시켜 주는 역할을 합니다.

정답은 아래와 같습니다.

 

[유니티용병단]Level1 용감한 용사

 

공백도 중간에 주려면 꼭 " "과 같은 문자열을 사이에 추가해 주어야 한다는 점을 잊지마세요.

본 강좌는 눈으로 읽어봐도 좋지만, 다른 개발 서적 저자들이 강조하듯이 직접 따라 해보면서 익히는 것을 추천드립니다.

직접 타이핑 하면서 오타도 겪어보면서 체득할 수 있어야 합니다.