Skip to main content

사운드와 폴리싱으로 완성도 높이기

Views 35약 11분생성형 AI 활용

지난 장에서 우리는 게임의 흐름을 완성했습니다. 시작하고, 플레이하고, 실패하고, 다시 도전하는 한 판의 리듬이 생겼죠. 그런데 아직 뭔가 조금 비어 있습니다. 점프는 되는데 가볍고, 아이템은 먹히는데 손에 잡히는 맛이 약하고, 게임오버는 동작은 하지만 감정은 남기지 못합니다.

바로 이 빈칸을 채우는 것이 이번 장의 목표입니다. 게임은 눈으로만 하는 것이 아닙니다. 귀로도 배우고, 짧은 흔들림과 번쩍임으로도 규칙을 이해합니다. 같은 점프라도 착지 소리가 들어가면 무게가 생기고, 같은 코인 획득도 반짝임과 효과음이 함께 나오면 보상이 분명해집니다. 기능은 그대로인데 완성도는 전혀 다른 게임처럼 느껴지는 순간이 여기서 시작됩니다.

사운드와 폴리싱으로 완성도 높이기

손맛은 규칙이 아니라 피드백에서 나온다

초보자가 자주 놓치는 사실이 하나 있습니다. 플레이어는 게임 규칙을 설명서로 배우지 않는다는 점입니다. 대부분은 피드백으로 배웁니다. 점프 버튼을 눌렀을 때 바로 소리가 나면 입력이 들어갔다는 걸 압니다. 착지 순간 짧은 효과음이 들리면 땅에 닿았다는 걸 몸으로 이해합니다. 피격 순간 화면이 아주 잠깐 흔들리면 지금 위험하다는 사실을 머리보다 먼저 느낍니다.

그래서 사운드와 폴리싱은 장식이 아닙니다. 게임 규칙을 알려 주는 신호입니다. 특히 이번 2D 점프 액션처럼 조작이 단순한 게임일수록 이 신호가 더 중요합니다. 넣을 수 있는 모든 곳에 사운드를 넣는 것이 아니라, 플레이어가 성공과 실패와 상태 변화를 알아야 하는 순간에만 정확히 넣는 것이 핵심입니다.

처음에는 아래 네 가지 순간만 챙겨도 게임의 인상이 확 달라집니다.

  • 점프할 때

  • 착지할 때

  • 피격할 때

  • 아이템을 획득할 때

여기에 배경음악 하나와 게임오버 전환 효과 하나만 더해도, 당신의 게임은 이제 연습작이 아니라 누군가에게 보여 줄 만한 작품처럼 느껴지기 시작합니다.

AudioClip과 AudioSource를 먼저 구분하자

Unity 오디오를 처음 다룰 때 가장 먼저 정리해야 할 것은 이름입니다. AudioClip은 소리 데이터 그 자체입니다. 녹음 파일, 효과음 파일, 배경음악 파일이라고 생각하면 됩니다. 반면 AudioSource는 그 소리를 실제로 재생하는 플레이어입니다. 음악 파일이 CD라면, AudioSource는 CD 플레이어입니다.

이 구분이 중요한 이유는 역할이 다르기 때문입니다. 같은 코인 획득 소리 하나를 여러 번 써도 AudioClip은 하나면 충분하지만, 그 소리를 언제 어떤 볼륨으로 재생할지는 AudioSource가 담당합니다. 그래서 프로젝트가 커질수록 클립과 재생기를 분리해서 생각해야 덜 헷갈립니다.

이번 2D 프로젝트에서는 아주 단순하게 시작하면 됩니다. 배경음악용 AudioSource 하나, 효과음용 AudioSource 하나를 두고 출발하세요. 배경음악은 길고 반복되므로 루프 재생이 중요하고, 효과음은 짧고 즉각적이므로 재생 타이밍이 더 중요합니다.

2D 게임이라면 처음부터 3D 오디오 욕심을 낼 필요도 없습니다. 대부분의 경우 아래처럼 가볍게 시작하는 편이 좋습니다.

  • Spatial Blend는 0으로 두어 2D 재생으로 고정합니다.

  • Doppler Level은 0으로 두어 불필요한 속도 기반 효과를 꺼 둡니다.

  • Reverb Zone Mix도 0으로 두어 공간 잔향 계산을 줄입니다.

  • Play On Awake는 BGM만 필요할 때 켜고, SFX는 보통 꺼 둡니다.

이렇게 해 두면 소리가 어디선가 이상하게 멀어지거나, 2D 게임인데도 거리 때문에 볼륨이 오락가락하는 일을 줄일 수 있습니다. Unity의 오디오 문서도 오디오 클립의 로딩 방식과 압축 방식을 프로젝트 성격에 맞게 고르라고 안내합니다.1

BGM과 효과음은 성격부터 다르다

배경음악과 효과음은 둘 다 소리지만, 하는 일이 완전히 다릅니다. 배경음악은 플레이 전체의 공기를 만듭니다. 긴장을 높이거나, 느긋한 분위기를 만들거나, 실패했을 때 감정을 정리해 주는 역할을 합니다. 반면 효과음은 순간의 의미를 또렷하게 찍어 줍니다. 점프했다, 맞았다, 먹었다, 끝났다. 짧지만 정확해야 합니다.

그래서 둘을 같은 방식으로 다루면 금방 어색해집니다. 배경음악은 먼저 루프가 자연스러운지 확인해야 합니다. 한 바퀴 돌고 다시 시작할 때 이음새가 툭 튀면 플레이어는 생각보다 빨리 거슬림을 느낍니다. 그리고 볼륨은 과감하게 낮게 시작하세요. 초보자는 BGM을 너무 크게 넣는 경우가 많습니다. 하지만 게임에서 가장 중요한 것은 음악이 아니라 조작과 신호입니다. 일반적으로는 효과음이 들리는 길을 BGM이 막지 않게 해야 합니다.

효과음은 반대입니다. 길고 화려할 필요가 없습니다. 오히려 짧고 바로 반응하는 편이 더 좋습니다. 점프 소리가 0.2초 늦게 나오면 캐릭터가 끈적하게 느껴지고, 코인 획득 소리가 너무 길면 다음 입력의 리듬을 방해합니다. 효과음은 멋있음보다 타이밍이 먼저입니다.

초반 밸런스를 잡을 때는 아주 단순한 기준을 써 보세요.

  • BGM은 먼저 줄인다.

  • SFX는 먼저 들리게 만든다.

  • 중요한 행동일수록 짧고 또렷한 소리를 붙인다.

이 원칙만 기억해도 사운드 때문에 플레이 감각을 망치는 실수를 크게 줄일 수 있습니다.

실습: 씬이 바뀌어도 살아남는 사운드 매니저 만들기

지금쯤 이런 고민이 생길 겁니다. 시작 화면에서 음악이 재생되다가 게임 씬으로 넘어갈 때 끊기면 어떡하죠? 효과음 볼륨과 배경음악 볼륨을 따로 조절하려면 어디서 관리하죠? 같은 음악을 또 재생하라고 호출해서 겹치면 어떡하죠?

이때 필요한 것이 사운드 매니저입니다. 이름은 거창하지만, 하는 일은 분명합니다. 배경음악과 효과음을 한곳에서 관리하고, 씬이 바뀌어도 유지되며, 같은 BGM이 중복 재생되지 않게 막는 역할입니다.

아래 코드는 입문자용으로 충분히 단순한 형태입니다.

using UnityEngine;

public class SoundManager : MonoBehaviour
{
    public static SoundManager Instance;

    [SerializeField] AudioSource bgmSource;
    [SerializeField] AudioSource sfxSource;
    [Range(0f, 1f)] public float masterVolume = 1f;
    [Range(0f, 1f)] public float bgmVolume = 0.4f;
    [Range(0f, 1f)] public float sfxVolume = 1f;

    void Awake()
    {
        if (Instance != null && Instance != this)
        {
            Destroy(gameObject);
            return;
        }

        Instance = this;
        DontDestroyOnLoad(gameObject);
        ApplySettings();
    }

    void ApplySettings()
    {
        bgmSource.loop = true;
        bgmSource.playOnAwake = false;
        sfxSource.playOnAwake = false;

        bgmSource.spatialBlend = 0f;
        sfxSource.spatialBlend = 0f;
        bgmSource.dopplerLevel = 0f;
        sfxSource.dopplerLevel = 0f;
        bgmSource.reverbZoneMix = 0f;
        sfxSource.reverbZoneMix = 0f;

        bgmSource.volume = masterVolume * bgmVolume;
        sfxSource.volume = masterVolume * sfxVolume;
    }

    public void PlayBGM(AudioClip clip)
    {
        if (clip == null) return;
        if (bgmSource.clip == clip && bgmSource.isPlaying) return;

        bgmSource.clip = clip;
        bgmSource.volume = masterVolume * bgmVolume;
        bgmSource.Play();
    }

    public void PlaySFX(AudioClip clip)
    {
        if (clip == null) return;
        sfxSource.PlayOneShot(clip, masterVolume * sfxVolume);
    }
}

이 코드의 핵심은 세 가지입니다. 첫째, DontDestroyOnLoad로 씬이 바뀌어도 오브젝트가 사라지지 않습니다. 둘째, PlayBGM에서 이미 같은 곡이 재생 중이면 다시 틀지 않아 음악이 겹치지 않습니다. 셋째, PlayOneShot을 사용해 짧은 효과음을 간단히 재생합니다.

세팅 순서는 어렵지 않습니다.

  1. 빈 오브젝트를 만들고 이름을 SoundManager로 바꿉니다.

  2. 자식으로 BGM Source, SFX Source 오브젝트를 만들고 각각 AudioSource를 붙입니다.

  3. SoundManager 스크립트를 부모 오브젝트에 붙입니다.

  4. 인스펙터에서 두 AudioSource를 연결합니다.

  5. 첫 씬에만 이 오브젝트를 두고, 다른 씬에는 중복으로 만들지 않습니다.

나중에 옵션 메뉴를 만들면 masterVolume, bgmVolume, sfxVolume 값을 슬라이더에 연결해 바로 확장할 수 있습니다. 중요한 것은 지금 단계에서 사운드 관련 판단을 한곳에 모으는 습관입니다. 프로젝트가 작을 때 이 습관을 들이면, 커졌을 때 훨씬 덜 무너집니다.

효과음은 어디에 넣어야 가장 잘 들릴까

사운드를 아무 데나 넣으면 오히려 산만해집니다. 특히 첫 게임에서는 소리를 채우는 것보다 고르는 능력이 더 중요합니다. 플레이어가 꼭 알아야 하는 순간에만 넣어야, 그 소리가 규칙처럼 작동합니다.

이번 프로젝트에서는 아래 기준으로 시작하면 안정적입니다.

  • 점프 시작: 버튼 입력이 먹었다는 확인

  • 착지 순간: 공중 상태가 끝났다는 확인

  • 피격 순간: 실패 위험이 커졌다는 경고

  • 아이템 획득: 보상을 받았다는 확인

  • 게임오버 직전 또는 직후: 상태 전환 알림

반대로 굳이 초반에 넣지 않아도 되는 것도 있습니다. 캐릭터가 가만히 서 있을 때의 숨소리, 매 프레임에 가까운 잔소리 같은 발걸음 변주, 의미 없는 장식 사운드는 첫 프로젝트에서 우선순위가 낮습니다. 왜냐하면 그런 요소는 게임의 의미를 또렷하게 만들기보다, 먼저 소리 관리와 밸런스를 복잡하게 만들기 쉽기 때문입니다.

좋은 기준은 간단합니다. 그 소리가 없어졌을 때 플레이어가 덜 잘 이해하게 된다면 넣을 가치가 있습니다. 없어도 아무 차이가 없다면 지금은 빼도 됩니다.

오디오 임포트 설정은 소리의 뒷정리다

사운드를 가져왔다고 바로 끝난 것이 아닙니다. 같은 파일도 임포트 설정에 따라 메모리 사용량과 로딩 방식이 달라집니다. 이 차이가 작은 프로젝트에서는 잘 안 보일 수 있지만, 모바일 빌드나 WebGL까지 생각하면 금방 체감됩니다.

Unity의 오디오 클립 임포트 설정에서 가장 먼저 볼 것은 Load Type입니다.1

용도추천 Load Type이유
짧은 효과음Decompress On Load재생 지연이 거의 없어 즉각 반응하기 좋음
중간 길이 음성·효과음Compressed In Memory메모리를 줄이면서도 바로 재생 가능
긴 배경음악Streaming메모리 사용을 가장 적게 유지하기 좋음

여기서 기억할 사실이 하나 있습니다. Decompress On Load는 작은 소리에는 편하지만, 큰 Vorbis 파일에는 메모리를 많이 씁니다. 반대로 Streaming은 메모리를 매우 적게 쓰지만, 긴 곡이 아주 많아지면 디스크 접근 비용을 고려해야 합니다.1

쉽게 말하면 이렇습니다. 짧은 점프 소리를 스트리밍으로 틀 이유는 거의 없습니다. 대신 2분짜리 배경음악을 Decompress On Load로 넣어 두면 괜히 무거워질 가능성이 큽니다.

그다음으로 중요한 설정은 Compression Format입니다.

  • 아주 짧고 중요한 SFX는 PCM 또는 ADPCM

  • 발걸음, 충돌음처럼 수가 많고 약간의 거친 느낌이 괜찮은 효과음은 ADPCM

  • 배경음악과 중간 길이 클립은 Vorbis/MP3

입문자에게는 이렇게 기억하면 충분합니다. 품질이 가장 중요하고 길이가 매우 짧으면 PCM, 용량과 성능 균형이 필요하면 ADPCM, 길고 압축 효율이 중요하면 Vorbis입니다.1

2D 게임에서 자주 보는 설정 실수

사운드는 눈에 잘 안 보이기 때문에 실수가 늦게 발견됩니다. 그래서 초반에 자주 틀리는 부분을 먼저 알아두면 좋습니다.

첫째, Force To Mono를 아무 생각 없이 끄거나 켜는 경우입니다. 2D 캐주얼 게임의 짧은 효과음은 대부분 모노로 충분합니다. 스테레오 공간감이 꼭 필요하지 않다면 Force To Mono를 켜서 용량을 줄이는 편이 좋습니다. 다만 이미 좌우 연출이 살아 있는 음악이나, 공간감 자체가 중요한 사운드는 함부로 모노로 바꾸지 마세요.1

둘째, Normalize를 무조건 켜는 경우입니다. 정규화는 조용해진 신호를 끌어올리는 데 도움이 되지만, 이미 외부 툴에서 볼륨 밸런스를 잘 맞춘 파일이라면 다시 손대지 않는 편이 낫습니다. 잘 다듬은 소리가 Unity에 들어오면서 예상보다 더 튀는 경우가 바로 여기서 생깁니다.1

셋째, Load In Background와 Preload Audio Data를 용도 없이 기본값으로만 두는 경우입니다. 긴 BGM이나 바로 필요하지 않은 큰 파일은 백그라운드 로딩이 도움이 될 수 있지만, 씬 시작과 동시에 꼭 재생해야 하는 효과음은 늦게 불러오면 첫 반응이 어색해질 수 있습니다.1

넷째, 원본 파일 품질을 과하게 유지하는 경우입니다. 모든 효과음을 44.1kHz 스테레오 최고 품질로 가져갈 필요는 없습니다. 짧은 SFX는 더 낮은 샘플레이트로도 충분히 자연스럽게 들리는 경우가 많습니다. 중요한 것은 숫자가 아니라 실제 청취 결과입니다.

폴리싱은 세게보다 정확하게 넣는다

이제 화면 쪽 연출을 더해 봅시다. 초보자가 폴리싱에서 가장 많이 하는 실수는 많이 넣는 것입니다. 흔들리고, 번쩍이고, 튀고, 날리고, 울리고, 깜빡이게 만들면 뭔가 열심히 한 것처럼 보이지만 실제 플레이 감각은 오히려 지저분해집니다.

좋은 폴리싱은 강한 것이 아니라 정확한 것입니다. 아주 짧고, 중요한 순간에만, 눈에 띄게 들어가면 됩니다.

이번 프로젝트에서 추천하는 최소 폴리싱은 세 가지입니다.

  • 착지 순간의 아주 약한 카메라 흔들림

  • 아이템 획득 순간의 짧은 반짝임 파티클

  • 게임오버 전환 때의 어두워지는 화면과 짧은 확인음

이 세 가지만 잘 넣어도 플레이어는 입력, 보상, 종료를 더 분명하게 느낍니다. 비용은 작지만 효과는 큽니다.

실습: 2D 게임용 아주 작은 카메라 흔들림

카메라 흔들림은 강할수록 좋은 효과가 아닙니다. 오히려 2D 게임에서는 너무 강하면 멀미처럼 느껴집니다. 점프 직후보다 착지, 피격, 큰 충돌처럼 무게가 실리는 순간에만 짧게 쓰세요.

아래 스크립트는 입문자가 바로 붙여 볼 수 있는 최소 형태입니다.

using System.Collections;
using UnityEngine;

public class CameraShake : MonoBehaviour
{
    Vector3 startPos;
    Coroutine shakeRoutine;

    void Awake()
    {
        startPos = transform.localPosition;
    }

    public void Shake(float duration = 0.08f, float power = 0.08f)
    {
        if (shakeRoutine != null) StopCoroutine(shakeRoutine);
        shakeRoutine = StartCoroutine(CoShake(duration, power));
    }

    IEnumerator CoShake(float duration, float power)
    {
        float time = 0f;
        while (time < duration)
        {
            time += Time.deltaTime;
            Vector2 offset = Random.insideUnitCircle * power;
            transform.localPosition = startPos + new Vector3(offset.x, offset.y, 0f);
            yield return null;
        }

        transform.localPosition = startPos;
        shakeRoutine = null;
    }
}

이 스크립트를 메인 카메라에 붙이고, 착지 함수나 피격 함수에서 Shake()를 호출하면 됩니다. 다만 꼭 기억하세요. 모든 점프마다 흔드는 것이 아니라, 체감상 무게가 실리는 순간에만 써야 합니다. 그래야 정말 중요한 순간이 더 크게 느껴집니다.

조금 더 부드럽고 긴 흔들림이 필요하다면 매 프레임 완전히 랜덤한 값 대신 노이즈 기반 방식이 더 자연스럽습니다. Perlin Noise를 활용하면 튀는 느낌을 줄이고 더 매끈한 진동을 만들 수 있습니다.4

파티클은 많이보다 짧게 보이게 하자

파티클은 작은 마술사 같습니다. 정말 별것 아닌 동작도 반짝이는 먼지 한 줌이 생기면 손맛이 살아납니다. 하지만 파티클도 욕심내면 쉽게 과해집니다.

이번 장에서는 아주 작은 원칙만 기억하면 충분합니다.

첫 번째, 파티클은 사건의 꼬리표처럼 써야 합니다. 아이템 획득이면 반짝임 한 번, 피격이면 튀는 조각 한 번, 착지면 먼지 한 번. 사건 하나에 효과 하나면 충분합니다.

두 번째, 지속 시간을 짧게 가져가세요. 0.2초에서 0.5초 사이의 작은 효과가 입문 프로젝트에는 가장 다루기 쉽습니다. 너무 오래 남아 있으면 다음 행동을 방해합니다.

세 번째, 색과 소리를 맞추세요. 노란 코인을 먹었는데 파란 파티클이 터지고, 소리는 둔탁하면 감정이 갈라집니다. 작은 게임일수록 톤의 일관성이 더 중요합니다.

파티클 시스템 자체는 Unity 기본 Particle System만으로도 충분합니다. 처음에는 프리셋보다 아래 항목부터 만져 보세요.

  • Start Lifetime

  • Start Speed

  • Start Size

  • Emission Count

  • Color over Lifetime

이 다섯 가지만 조금씩 조절해도 꽤 그럴듯한 결과가 나옵니다. 핵심은 화려함이 아니라 읽힘입니다.

화면 전환은 사운드와 리듬을 맞출 때 더 좋아진다

게임오버 화면을 그냥 켜는 것과, 0.2초 정도 화면이 어두워지며 짧은 종료음을 들려주는 것은 느낌이 다릅니다. 시작 버튼을 누를 때도 마찬가지입니다. 클릭 소리 없이 화면만 바뀌면 시스템처럼 느껴지고, 짧은 확인음과 함께 바뀌면 게임처럼 느껴집니다.

전환에서 중요한 것은 속도입니다. 너무 긴 페이드는 답답하고, 너무 짧으면 의도한 연출이 느껴지지 않습니다. 입문 프로젝트에서는 0.15초에서 0.35초 사이를 먼저 시도해 보세요. 그리고 이 전환 소리는 배경음악보다 살짝 앞에 들리게 하는 편이 좋습니다. 플레이어는 귀로 상태 변화를 먼저 인식하고, 눈으로 그 결과를 확인하는 경우가 많기 때문입니다.

정리하면 폴리싱의 리듬은 이렇게 맞추면 좋습니다.

  • 사건 발생

  • 짧은 SFX 재생

  • 아주 짧은 시각 효과

  • 바로 조작 복귀 또는 상태 전환

이 순서가 지켜지면 게임은 더 반응이 빠르게 느껴집니다.

AI에게 묻자

Unity AI와 외부 생성 도구는 사운드와 연출의 초안을 빠르게 만드는 데 꽤 유용합니다. 다만 생성 결과는 반드시 사람이 검수해야 합니다. 특히 사운드와 연출은 첫인상은 그럴듯해도 반복 플레이에서 금방 거슬릴 수 있습니다.

AI를 잘 쓰는 방법은 막연하게 부탁하지 않는 것입니다. 점프 게임에 어울리는 멋진 사운드 만들어줘보다 훨씬 구체적으로 말해야 합니다.

프롬프트 예시

  • 2D 점프 액션 게임용으로 점프, 착지, 피격, 코인 획득, 게임오버에 필요한 효과음의 성격을 한 줄씩 정의해줘. 각 소리는 0.2초 안팎으로 짧고 모바일에서 거슬리지 않게.

  • 배경음악이 효과음을 덮지 않도록 BGM 볼륨과 SFX 볼륨의 시작 비율을 추천해줘.

  • Unity AudioClip 임포트 기준으로 이 파일은 BGM인지 SFX인지 판단하고 Load Type과 Compression Format을 추천해줘.

  • 아이템 획득 파티클을 노란색 별가루 느낌으로 만들고 싶은데, Particle System의 핵심 파라미터만 5개 추천해줘.

생성형 도구로 만든 효과음이나 음악을 프로젝트에 넣기 전에는 네 가지를 꼭 확인하세요.

  • 반복해서 들었을 때 귀에 거슬리는 구간이 없는가

  • 루프의 시작과 끝이 자연스럽게 이어지는가

  • 게임 전체의 장르 톤과 맞는가

  • 상업적 이용 조건과 권리 관계가 분명한가

빠르게 프로토타입을 채우려면 Unity Asset Store의 오디오 카테고리에서 검증된 팩을 둘러보는 것도 좋은 방법입니다.3 중요한 것은 출처가 어디든, 최종 책임은 출시하는 개발자에게 있다는 점입니다.

이 장에서 배운 것

  • AudioClip은 소리 데이터이고 AudioSource는 재생기라는 점

  • 2D 게임에서는 불필요한 3D 오디오 옵션을 줄여 더 단순하고 안정적으로 시작할 수 있다는 점

  • 효과음은 성공, 실패, 상태 변화를 알리는 신호처럼 써야 한다는 점

  • 씬 전환에도 유지되는 사운드 매니저를 만들면 작은 프로젝트도 훨씬 안정적으로 완성된다는 점

  • Load Type, Compression Format, Force To Mono 같은 임포트 설정이 메모리와 로딩에 큰 영향을 준다는 점

  • 카메라 흔들림, 파티클, 화면 전환은 강하게 많이 넣는 것보다 짧고 선명하게 넣는 편이 더 효과적이라는 점

  • AI가 만든 사운드와 연출은 빠르게 초안을 만드는 데 유용하지만, 품질과 권리 검수는 반드시 사람이 해야 한다는 점

다음 장에서 만들 것

이제 당신의 게임은 꽤 그럴듯해졌습니다. 조작도 되고, 규칙도 있고, 손맛도 생겼습니다. 다음 장에서는 드디어 이 게임을 밖으로 내보낼 차례입니다. PC 빌드, WebGL 공유, 모바일 빌드까지 이어 가며, 내 컴퓨터 안에서만 돌던 프로젝트를 진짜 출시 가능한 형태로 바꾸겠습니다.

작게 만들고 빠르게 보여 주는 이 책의 전략은 이제 가장 짜릿한 순간으로 향합니다. 다음 장에서는 정말로 누군가에게 링크를 보내고, 설치 파일을 건네고, 당신 이름이 들어간 첫 게임을 세상에 꺼내 놓게 됩니다.

참고

1Audio Clip Import Settings reference

3Unity Asset Store Audio

4Unity Camera Shake Tutorial

책 목록

AI와 함께 만드는 Unity 6: 코드 한 줄 모르던 사람도 30일 안에 첫 게임을 출시하는 법

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기