유니티 기초 강좌: C# 문자열(string)

C#에서 문자열은 가장 기본적인 데이터 타입 중 하나로, 텍스트를 저장하는 데 사용됩니다. 유니티에서 게임 개발을 할 때, 문자열은 캐릭터의 이름, 대화 내용, 팀 이름 등 다양한 요소에서 필수적입니다. 이 강좌에서는 C#의 문자열 타입에 대해 깊이 있는 설명과 함께, 유니티에서 활용하는 방법을 소개하겠습니다.

문자열이란?

문자열(String)은 문자(character)의 집합으로, ‘작은 따옴표’ 또는 ‘큰 따옴표’로 감싸서 표현합니다. C#에서 문자열은 System.String 클래스의 인스턴스입니다. 문자열은 불변(immutable) 데이터 타입으로, 한번 만들어진 문자열은 변경할 수 없습니다. 대신, 변경할 필요가 있을 때 새로운 문자열을 생성해 반환합니다.

문자열 선언 및 초기화

문자열을 선언하고 초기화하는 방법은 몇 가지가 있습니다. 가장 기본적인 방법은 다음과 같습니다:

string myString = "Hello, Unity!";

여기서 myString은 문자열 변수이며, “Hello, Unity!”라는 텍스트를 저장합니다.

여러가지 방법으로 문자열 초기화하기

문자열을 초기화하는 다양한 방법을 살펴보겠습니다.

string emptyString = ""; // 비어있는 문자열
string anotherString = new string('A', 10); // 'A' 문자가 10번 반복된 문자열

문자열 연산

C#에서는 문자열을 다루기 위해 여러 가지 방법을 제공합니다. 문자열을 결합(concatenation)하는 가장 간단한 방법은 더하기(+) 연산자를 사용하는 것입니다.

string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName; // "John Doe"

String.Format 메소드

더 복잡한 문자열을 만들기 위해 String.Format 메소드를 사용할 수 있습니다. 이는 인수로 주어진 값을 형식화하여 문자열을 만듭니다.

int score = 100;
string message = String.Format("당신의 점수는 {0}입니다.", score); // "당신의 점수는 100입니다."

문자열 보간법 (String Interpolation)

C# 6.0부터는 문자열 보간법을 사용할 수 있습니다. 이는 문자열 내에서 변수를 직접 사용할 수 있게 해줍니다.

string message = $"당신의 점수는 {score}입니다."; // "당신의 점수는 100입니다."

문자열 메소드

C#의 String 클래스는 문자열을 다루기 위한 다양한 메소드를 제공합니다. 여기서는 주로 사용되는 몇 가지 메소드를 살펴보겠습니다.

문자열 길이

int length = myString.Length; // 문자열의 길이를 반환합니다.

문자열 검색

특정 문자가 문자열에 포함되어 있는지를 확인하려면 Contains 메소드를 사용할 수 있습니다.

bool containsHello = myString.Contains("Hello"); // true

문자열 자르기

Substring 메소드를 사용하여 문자열의 일부를 추출할 수 있습니다.

string sub = myString.Substring(7, 5); // "Unity"

문자열 분리

문자열을 특정 구분자로 나누고 싶다면 Split 메소드를 사용할 수 있습니다.

string[] words = "유니티, C#, 문자열".Split(','); // ["유니티", " C#", " 문자열"]

문자열 대소문자 변경

문자열의 모든 문자의 대문자 또는 소문자로 변환하려면 ToUpper, ToLower 메소드를 사용할 수 있습니다.

string upper = myString.ToUpper(); // "HELLO, UNITY!"
string lower = myString.ToLower(); // "hello, unity!"

유니티에서 문자열 활용하기

유니티에서는 문자열이 다양한 곳에서 필요합니다. 예를 들면, UI 텍스트, 로그 메시지, 대화 시스템 등에서 사용할 수 있습니다. 아래는 유니티에서 문자열을 활용하는 몇 가지 예제입니다.

UI 텍스트에 문자열 표시하기

유니티의 Text 컴포넌트를 사용하여 화면에 문자열을 표시할 수 있습니다.

using UnityEngine;
using UnityEngine.UI;

public class ScoreDisplay : MonoBehaviour
{
    public Text scoreText;
    private int score = 0;

    void Start()
    {
        UpdateScore();
    }

    public void UpdateScore()
    {
        scoreText.text = $"현재 점수: {score}"; // 문자열 보간법을 사용
    }
}

로그 메시지 출력하기

Debug.Log 메소드를 사용하여 문자열을 콘솔에 출력할 수 있습니다.

Debug.Log("게임이 시작되었습니다!"); // 콘솔에 출력

대화 시스템 만들기

문자열을 사용하여 간단한 대화 시스템을 구현할 수 있습니다. 대화의 각 부분을 문자열로 저장하고, 특정 조건에서 출력하는 방식입니다.

public class Dialogue : MonoBehaviour
{
    private string[] dialogues = {
        "안녕! 나는 캐릭터 A야.",
        "여기에 어떻게 도와줄 수 있을까?",
        "좋은 하루야!"
    };

    private int currentDialogueIndex = 0;

    public void ShowNextDialogue()
    {
        if (currentDialogueIndex < dialogues.Length)
        {
            Debug.Log(dialogues[currentDialogueIndex]);
            currentDialogueIndex++;
        }
    }
}

문자열 포맷팅의 실용적 활용

문자열 포맷팅은 게임에서 다양한 데이터를 표시하는 데 매우 유용합니다. 게임 내에서 점수, 레벨, 아이템 수 등을 다룰 때 포맷팅을 통해 더욱 직관적이고 깔끔하게 보여줄 수 있습니다.

점수판 예시

점수판에서 플레이어의 점수를 형식화하여 출력하는 예제를 살펴보겠습니다.

using UnityEngine;
using UnityEngine.UI;

public class ScoreBoard : MonoBehaviour
{
    public Text scoreText;
    private int playerScore;

    public void AddScore(int points)
    {
        playerScore += points;
        UpdateScoreDisplay();
    }

    private void UpdateScoreDisplay()
    {
        scoreText.text = $"플레이어 점수: {playerScore:N0}"; // 천 단위 구분 기호를 사용
    }
}

문자열의 유용한 팁

문자열 다루는 데 있어 몇 가지 유용한 팁을 소개합니다.

문자열 비교

문자열을 비교할 때는 String.Equals 메소드를 사용하거나 == 연산자를 사용할 수 있습니다. 대소문자를 무시하고 비교하고 싶다면 String.Compare 메소드를 활용합니다.

bool isSame = String.Equals("apple", "Apple", StringComparison.OrdinalIgnoreCase); // true

무한 문자열 만들기

만약 무한하게 문자열을 반복하고 싶다면, String.Concat 메소드를 활용할 수 있습니다. 하지만 주의해야 할 점은, 메모리 사용량이 늘어날 수 있으므로 적절히 사용해야 합니다.

string repeated = String.Concat(Enumerable.Repeat("A", 1000)); // 'A'가 1000번 반복된 문자열

결론

지금까지 C#의 문자열에 대한 기본적인 개념과 유니티에서의 활용 방법에 대해 다루었습니다. 문자열은 유니티 개발에서 필수적인 요소로, 게임의 대화 시스템, 점수판, UI 등 다양한 부분에서 사용됩니다. 이 강좌에서 다룬 내용을 바탕으로 더 나은 게임을 개발하는 데 도움이 되길 바랍니다.