데이터 타입

파이썬에서 다룰 수 있는 가장 기본적인 데이터의 종류는 정수, 부동소수점, 문자열, 부울값이 있다.

정수 int 소수점이 없는 수치
부동소수점 float 소수가 있는 수치
문자열 string 문자의 나열
부울값 bool True, False

 

이러한 타입들은 엄밀하게 구분되는데 type() 함수를 사용하여 변수나 값의 타입에 대한 정보를 알 수 있다.

연산 과정이 있어도 결과 값으로 타입이 결정된다.

문자열을 값을 할당할 때는 큰 따옴표("") 또는 작은따옴표('')로 문자를 감싼다.

일반적인 문자열을 감쌀 때는 두 부호가 동일하게 동작을 하지만 특수한 상황에서 다르게 사용한다.

 

만약 문자열 안에 부호가 포함되어 있는 상황에서는 문자열의 범위를 표현하려던 부호가 의도와 다르게 적용될 수 있다.

Hello "Python"!
I'm Bak

a = "Hello "Python"!"

b = 'I'm Bak'

이런 경우에는 문자열을 해석할 때 오류가 발생하지 않도록 두 종류의 방식을 모두 사용할 수 있도록 한다.

 

형변환

type casting

데이터형을 다른 데이터 형으로 변환하는 것을 뜻한다.

Int

int() : 데이터 타입을 정수로 변환시킨다.

 

Float

float() : 데이터 타입을 부동소수점으로 변환한다.

 

String

str() : 데이터 타입을 문자열로 변환한다.

 

Bool

bool은 어떤 조건이 성립했는지 아닌지 처리를 바꾸면서 실행된다. 

True와 False 둘 중 하나로 존재한다.

 

bool()을 사용하면 입력된 식이나 값을 평가해서 bool 타입의 값으로 출력한다. 이때 0의 경우 false 그 외의 값들은 모두 true로 평가된다.

 

728x90
반응형

함수는 여러 개의 처리를 기능별로 모아 놓은 것이다. 

사용할 때는 함수가 어떤 기능을 하는지만 알아도 되며 내부에서 처리되는 과정들은 알 필요가 없다.

 

이때 함수에 전달하는 데이터를 인수, 함수로부터 돌아오는 값을 반환값이라고 한다.

 

필요에 따라 직접 함수를 구현해서 사용할 수 있지만 파이썬에는 미리 준비된 함수도 많이 제공된다.

 

예를 들어서 두 개의 값을 비교해서 더 크거나 또는 작은 값을 구하는 처리가 필요한 경우가 빈번하게 사용되는 상황일 때, 매번 값을 비교하는 과정을 작성하는 것은 비효율적이다. 이럴 때 함수를 만들어서 처리하면 코드가 간결해진다. 

만약 필요한 함수가 파이썬에서 제공되는 것이라면 직접 구현하는 과정도 생략이 될 수 있다.

 

예시에서 처리하는 기능의 경우 파이썬에서 max(), min() 함수가 있다.

max(a, b)  : a와 b 중 큰 값을 반환

min(a, b) : a와 b 중 작은 값을 반환 

 

함수는 기본적으로 함수명() 형태로 선언되며 실행할 때 괄호를 붙여 실행한다. 어떠한 값을 입력해야 한다면 괄호 안에 변수나 값을 넣는다.

 

 

728x90
반응형

변수명

파이썬에서 변수명으로 사용이 가능한 문자는 다음과 같다.

대소 영문자, 숫자, 언더스코어이다. 여기서 숫자는 맨 앞에 올 수 없다.

 

이외에 예약어로 지정되어 있는 키워드들도 변수명으로 사용이 불가능하다.

 

대입 간이 기법

변수의 값이 자주 갱신되는 프로그래밍에서 값을 증가시키고 감소시키는 처리에서는 간이 기법을 사용한다.

수학에서는 적용되지 않는 a = a + 1과 같은 서식을 사용할 수 있다. 

동작은 우변을 먼저 계산하고 결과를 좌변의 변수에 대입한다.

 

연산을 하고 다시 자신에게 대입하는 처리보다 더 간단한 기술방법이 있다.

 

 

+= 자기 자신에게 우변값을 더하고, 그 결과를 자기 자신에 대입한다.
-= 자기 자신에서 우변값을 빼고, 그 결과를 자기 자신에게 대입한다.
*= 자기 자신에게 우변값을 곱하고, 그 결과를 자기 자신에게 대입한다.
/= 자기 자신을 우변값으로 나누고, 그 결과를 자기 자신에게 대입한다.

 

728x90
반응형

사칙연산

수학에서 사용되는 사칙연산을 그대로 사용할 수 있다. 

  수학 기호 파이썬 기호
덧셈 + +
뺄셈 - -
곱셈 x *
나눗셈 ÷ /

 

수학에서 사용하는 연산 규칙이 그대로 적용된다.

 

기타 연산

사칙연산 이외에도 일반적인 컴퓨터 사용하는 계산 기호들을 사용할 수 있다.

 

나머지를 구한다. %
몫을 정수로 구한다. //
지수를 구한다. **

 

728x90
반응형

IDLE

Intergrated Development Environment, 통합 개발 환경

파이썬 1.5.2B1 이후에 같이 설치되는 통합 개발 환경이다. 파이썬 명령어를 쉽게 사용할 수 있도록 제공되는 GUI 툴이다.

 

기본적인 연산 동작을 IDLE로 테스트해 본다.

IDLE은 시작에서 IDLE을 검색해서 찾아서 명령어창을 실행시킬 수 있다.

 

IDLE에는 여러 기능들이 제공된다.

 

자동완성

명령어를 빠르게 입력하거나 제공되는 함수를 찾을 수 있다.

 

구문강조

 

등의 편의성을 제공한다.

728x90
반응형

파이썬은 읽고 쓰기 쉽고 프로그래머의 작업 효율을 높이도록 디자인된 프로그래밍 언어이다.

윈도우, 맥 os, 리눅스는 물론 라즈베리 파이 등 다양한 운영체제를 지원한다. 이러한 장점들이 수많은 사용자를 이끌었고 거기에 따라서 자료도 찾기 쉬워 접근성이 더 높아지면서 그에 따라 더욱더 성장할 가능성이 있는 언어라고 볼 수 있다.

 

라이브러리

파이썬의 가장 큰 특징은 풍부한 라이브러리이다. 

문법이 간단해서 코드를 작성하는 데는 어려움이 없지만 무언가를 만들기 위해서는 목적에 맞는 라이브러리를 사용할 필요가 있다. 

 

파일을 읽고 쓰고, 네트워크에 접근하는 등 표준으로 준비돼 있는 것뿐만 아니라 서드파티가 공개하는 것도 많다.

 

대표적으로 유명한 라이브러리들이 있다.

NumPy                수치 계산 라이브러리
SciPy                   과학 기술 계산 라이브러리
PIL                       영상처리 라이브러리
Tkinter                  GUI 라이브러리
Beautiful Soup      HTML 정보 수집(스크래핑) 라이브러리
PyGame               게임 작성용 라이브러리

 

PyGame

python 3.8 버전을 기준으로 작업한다. 

게임을 개발하는데 필요한 라이브러리를 설치한다.

Anaconda

아나콘다는 파이썬에서 자주 쓰이는 패키지를 일괄적으로 설치할 수 있도록 한다.

Free Download | Anaconda

 

경로에 한글이 포함되어 있으면 에러가 발생할 수 있기 때문에 아나콘다를 설치하는 경로에는 한글이 포함되지 않도록 해주는 것이 좋다.

 

이때 환경변수를 Anaconda 폴더 내의 python.exe 가 실행되도록 경로를 맞춰야 한다.

 

게임에서 사용할 패키지를 설치한다.

 

pip install pygame

 

Error

다음과 같은 에러가 발생하면  pip이 설치되지 않아서 발생할 수 있기 때문에 직접 설치한다.

'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

pip은 보통 파이썬을 설치된다. 만약 이때 설치되지 못했다면 직접 명령어를 통해서 설치한다.

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

 

명령어를 입력하는 방법 외에도 python 인스톨러를 다시 실행시켜서 pip 설치에 대한 체크를 하고 파이썬 설치를 진행해도 된다.

 

pip 설치 후 다시 pygame 명령어 실행 시 제대로 설치가 된다.

 

완료된 패키지 파일을 실행시켜 설치한다.

python
import pygame

 

설치가 완료되면 다음 경로에 샘플이 생성된 것을 확인할 수 있다.

'[Anaconda 설치 경로]\Lib\site-packages\pygame\examples'

 

세팅 끝

 

728x90
반응형

프로그래밍에 대한 공부를 어느 정도 진행했을 무렵 다양한 언어들 중 평가가 좋은 언어를 따로 체크해 두고 학습해 보기로 하였다. 그렇게 미루고 미루다 언젠가 서점에서 책 하나가 눈에 들어왔다.

 

게임으로 배우는 파이썬

 

마침 체크리스트에는 파이썬도 있었다.

 

프로그래밍 언어는 특히 새로운 것을 학습할 때는 무언가를 만들면서 하는 게 쉽고 빠르게 습득이 된다고 생각한다.

 

게임으로 파이썬을 배울 수 있다는게 흥미가 생겨 목차만 대강 훑어보고 바로 구매하였다.

 

이 책을 시작으로 파이썬에 대해서 기본이라도 얻어갈 수 있게 된다면 의미가 있을 거라고 생각한다.

 

 책의 저자인 다나카 겐이치로는 파이썬을 배우기 위해서 입문서도 읽고 세미나도 다녔지만 익숙해지지 않았는데 자바스크립트로 만든 게임을 파이썬에 이식했더니 금방 익숙해졌다고 한다. 그래서 게임을 만들면서 파이썬을 배울 수 있도록 이 책을 만들었다.

 

또한 저자는 파이썬이 적용될 수 있는 분야가 다양하고 가능성이 무한하다고 하는데 역자 또한 동일한 맥락으로 도입글을 작성했다. 파이썬은 간결하고 쉬우며 방대한 기능을 하는 라이브러리가 매력적이라고 한다.

 

커뮤니티나 포탈에서도 파이썬에 대한 호평을 많이 봐왔는데 시작하는 글에서 다시 보게 되니 과연 파이썬이 얼마나 쉽고 간다 하며 활용성이 좋은 것일까 기대가 된다.

728x90
반응형

Collections

. Net Framework에서 사용되던 라이브러리이다. Generic 기능이 도입되기 이전에 사용되었으며 Collections의 클래스들은 모든 요소를 object 타입으로 처리하여  요소를 다룰 때에 형변환을 필요로 한다.

 

대표적의로 ArrayList, Hashtable, sortedList, Stack, Queue 등이 있다.

 

Generic

Collections의 클래스들은 형변환이 필요하기 때문에 잘못된 타입을 사용할 경우 에러가 발생하게 된다. 

이 문제를 해결하기 위해서 안정성을 제공하는 새로운 클래스들이 Generic 네임스페이스로 추가되었다.

 

대표적으로 List, Dictionary, Queue <T>, Stack <T> 등이 있다.

 

 

Collections Generic
ArrayList List<T>
Hashtable Dictionary<TKey, TValue>
Queue Queue<T>
Stack Stack<T>

 

Compare

옛날부터 작성된 코드인 경우에는 Collections 라이브러리를 사용하기 위해서 해당 네임스페이스를 선언해 주는 경우가 많다. 거기다 새로 추가된 Generic도 사용하기 위해서 두 라이브러리를 모두 선언하는 경우가 많은데 공식 문서에 따르면 Collections에서 사용하는 클래스들은 Generic에 안정성이 추가된 대체할 수 있는 클래스들이 있기 때문에 되도록이면 Generic만 사용하기를 권장한다.

 

대표적으로 ArrayList와 List<T>를 비교해 본다. 

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

class Program
{
    static void Main()
    {
        // ArrayList
        ArrayList arrayList = new ArrayList();

        // 요소 추가
        arrayList.Add("Hello");
        arrayList.Add(30);
        arrayList.Add(true);

        // 요소 접근
        string str = (string)arrayList[0];
        int num = (int)arrayList[1];
        bool flag = (bool)arrayList[2];

        Console.WriteLine(str);  // 출력: Hello
        Console.WriteLine(num);  // 출력: 30
        Console.WriteLine(flag); // 출력: True
        
        // List<T>
        List<object> list = new List<object>();

        // 요소 추가
        list.Add("Hello");
        list.Add(30);
        list.Add(true);

        // 요소 접근
        string str = list[0];
        int num = list[1];
        bool flag = list[2];

        Console.WriteLine(str);  // 출력: Hello
        Console.WriteLine(num);  // 출력: 30
        Console.WriteLine(flag); // 출력: True
    }
}

arrayList와 list 변수 모두 가변 배열로 요소를 추가하고 인덱스로 접근하여 값을 사용하고 있다.

하지만 사용법에서 차이가 발생한다.

 

ArrayList는 Add 메서드를 사용하여 요소를 추가하고 접근할 때에는 형변환을 수행해야 한다. 모든 요소를 object 타입으로 처리하므로 요소를 사용하기 전에 타입을 캐스팅해야 한다.

 

하지만 List 요소의 타입은 컴파일 시점에 검사 되기 때문에 추가한 요소에 접근할 때 형변환이 따로 필요하지 않다. 

즉 Generic을 사용하게 되면 타입의 안정성이 보장되고 컴파일러가 타입을 검사를 수행하기 때문에 타입으로 인해 발생하는 문제를 사전에 발견할 수 있으며 형변환 코드를 작성할 필요가 없기 때문에 코드가 간결해진다.

728x90
반응형

C#은 객체지향 언어로 객체지향 프로그래밍을 위한 개념들이 있다.

 

Class

객체를 정의하는 템플릿이며 객체의 상태를 나타내는 필드와 동작을 나타내는 메서드를 포함한다.

즉 클래스는 객체를 표현하기 위한 설계도로 볼 수 있다.

public class MyClass
{
    // field, 멤버 변수
    public int id;
    public string name;
    public int age;
    
    // method, 멤버 함수
    public void Introduc()
    {
        string introduce = "My age : " + agem + "\nMy name : " + name;
    	Cosole.WriteLine(introduce);
    }
}

MyClass라는 객체에는 id, name, age 멤버변수와 Introduce 메서드를 포함하고 있다.

 

Instance

클래스의 인스턴스로 실제로 메모리에 할당된 데이터이다. 객체는 클래스에서 정의된 필드와 메서드를 사용할 수 있으며 개별적인 상태를 유지한다.

public void Main(string[] args)
{
    // Instance, MyClass 클래스의 객체
    MyClass myClass = new MyClass();
    myClass.id = 1;
    myClass.name = "bak";
    myClass.age = 30;
    myClass.Introduce();
    
    // Instance, myClass와는 개별적인 객체
    MyClass myClass2 = new MyClass();
    myClass2.id = 2;
    myClass2.name = "kim";
    myClass2.age = 25;
    myClass2.Introduce();
}

동일한 MyClass를 인스턴스화한 myClass와 myClass2는 개별적인 객체이다.

 

Inherit

클래스 간의 계층 구조를 형성하여 코드의 재사용성과 구조화를 실현한다. 기존 클래스를 기반으로 새로운 클래스를 정의하고 확장할 수 있는데 ㅅ상속을 통해 부모 클래스의 멤버를 자식 클래스에서 사용하는 것이 가능하다.

 

public class Parent
{ 
    public int id;
    public string name;
    
    public void MethodParent()
    {
    	Console.Log(id, name);
    }
}

public class Child
{
    public void MethodChild()
    {
    	id = 10;
        name = "bak";
        MethodParent();
    }
}

재사용할 코드는 부모 클래스로 만들어서 자식 클래스에서 상속하여 그대로 사용할 수 있다.

 

Polymophism

다형성은 같은 이름의 메서드나 속성을 다른 방식으로 구현하는 개념이다. 다형성은 상속과 관련이 깊으며 부모 클래스의 타입으로 자식 클래스의 객체를 참조하면 다형성을 활용할 수 있다.

 

public class Parent
{
    public virtual void MethodParent()
    {
    	Console.WriteLine("Call Parent Method");
    }
}

public class Child
{
 	public override void MethodParent()
    {
    	Console.WriteLine("Call Parent Method From Child");
    }
}

다형성의 대표적인 예는 부모 클래스의 메서드를 자식에서 오버라이딩하는 경우가 있다.

 

Encapsulation

객체의 상태와 동작을 외부로부터 감추는것을 뜻한다.  클래스는 필드와 메서드를 적절한 접근 제한자로 제어하여 캡슐화를 구현할 수 있다. 이는 객체의 내부 구현을 보호하며 외부에서는 필요한 기능만 사용할 수 있도록 한다.

 

public class MyClass
{
    private string name;
    private int age;
    
    public void SetName(string name)
    {
    	this.name = name;
    }
    
    public string GetName()
    {
    	return name;
    }
    
    public void SetAge(int age)
    {
    	this.age = age;
    }
    
    public int GetAge()
    {
    	return age;
    }
}

public class Program
{
    public static void Main(string[] args)
    {
    	MyClass myClass = new MyClass();
        myClass.SetName("Bak");
        myClass.SetAge(30);
        Console.WriteLine("Name : " + myClass.GetName());
        Console.WriteLine("Age : " + myClass.GetAge());
    }
}

클래스에서 접근을 허용할 부분을 public 불필요한 부분은 private로 접근 제한자를 두어 필요한 부분만 제어할 수 있도록 한다.

 

Abstract

복잡한 시스템을 단순화하고 핵심적인 요소만을 추출하여 모델링하는 과정을 말한다. 추상화는 클래스의 공통적인 특징을 추출하여 부모 클래스나 인터페이스로 정의할 수 있다.

 

public class Person
{
    public int age;
    public string name;
    public int countryCode;
    
    public virtual void Eat() {}
    public virtual void Sleep() {}
    public virtual void Work() {}
}

public class Student : Person
{
    public override void Work()
    {
    	Console.WirteLine("Studying");
    }
}

public class Teacher : Person
{
    public override void Work()
    {
    	Console.WriteLine("Teaching");
    }
}

추상화는 클래스를 만들 때 필요한 기본 개념으로 재사용, 다형성 등을 고려하여 최대한 구체적이지 않으면서 공통적인 부분을 부모 클래스로 만들 때 필요하다.

728x90
반응형

'Program Language > C#' 카테고리의 다른 글

C# 인스턴스 생성 키워드 : new - 생성자와 소멸자  (0) 2024.05.06
C# 라이브러리 Collections, Generic  (0) 2023.05.16
C# Operator 키워드  (0) 2023.04.27
C# Method Parameter 키워드  (0) 2023.04.27
C# Namespace 키워드  (1) 2023.04.27

에디터 버전 : 2021.3.28f1 (LTS)

 

Audio

오디오 시스템을 구성하는 데 사용되는 설정으로 모든 Audio 컴포넌트에 영향을 미치는 전역적인 설정을 제공한다.

 

Unity Project Settings - Audio

 

Global Volume

오디오 시스템의 볼륨을 전역으로 적용한다.

Audio - Global Volume

볼륨의 초기값에 곱해주는 수로 AudioListner.volume과 동일하다.

 

Volume Rolloff Scale

볼륨이 감쇠되는 정도를 전역으로 조절한다. 

Audio Volume Rolloff Scale

단 Logarithmic Volume Curves 인 경우에만 적용된다.

Logarithmic Volume Curves는 로그 함수 곡선형태로 사운드가 감쇠되는 경우에만 적용되는데 이 사운드는 Audio Source 컴포넌트의 속성값 중에 3D Sound Settings의 Volume Rolloff에서 선택할 수 있는 옵션이다.

( 기본으로 Logarithmic Rolloff 설정 )

 

값은 기본적으로 1로 되어있는데 이 값이 현실에 가장 가까운 수치이다.

 

Doppler Factor

소리에 도플러 효과(Doppler Effect)를 적용시키기 위한 수치이다. 

Audio Doppler Factor

원하는 도플러 효과를 얻기 위해서 해당 수치를 조절할 수 있다.

 

Doppler Effect

도플러 효과란 파동의 진동수가 왜곡되는 현상이다. 음원(소리의 근원지)가 움직이면서 파원이 다가오고 있을 때 정지한 관찰자에게는 파동의 파장이 실제보다 짧게 느껴지고 다시 멀어지게 되면 파장이 실제보다 길게 느껴지는 것이다.

 

예를 들어 멀리서부터 소방차가 사이렌을 켜고 달려오고 있다. 이때 멀리서부터 나에게 가까워지는 동안에는 사이렌의 소리가 점점 높아지는 것처럼 들리다가 내 옆을 지나쳐 멀어질 때는 낮아지는 것처럼 느껴진다. 하지만  이는 상대적인 효과로 관찰자만 느끼는 현상이고 소방차에 탑승한 사람에게는 일정한 소리로 들린다.

 

유니티의 프로젝트 세팅에서 Doppler Factor 수치는 기본적으로 1이다. 이 수치는 소리의 움직임이 실제 도플러 효과와 거의 동일하게 시뮬레이션되며 값이 0에 가까워질수록 도플러 효과가 감소하고 값이 높아질수록 강조된다.

 

Default Speaker Mode

프로젝트의 오디오 출력을 설정할 수 있는 옵션이다. 유니티 엔진에서 오디오가 재생될 때 사용되는 스피커의 타입을 지정할 수 있다.

Audio - Default Speaker Mode

옵션의 종류는 다음과 같다.

Default Speaker Mode - Option

 

Mono

채널 개수가 1개이다.

오디오를 단일 스피커에서 재생한다. 오디오 소스는 좌우 채널이 결합된 단일 스피커로 재생된다. 

주로 모노 오디오 효과나 음성 등 단일 채널 오디오를 재생하는 데 사용된다.

 

Stereo

채널 개수가 2개이다.

좌우 스피커에서 각각의 채널이 재생된다. 대부분의 오디오에서 사용되는 일반적인 스테레오 효과를 재생할 때 사용되며 기본으로 선택된 설정이다.

 

Quad

채널 개수가 4개이다.

전후좌우  4개의 스피커에 각각의 채널이 재생되며 3D 오디오 효과를 표현할 수 있다.

 

Surround

채널 개수는 5개이다.

전면 좌우, 중앙, 후면 좌우 5개의 스피커를 사용한다. 더 입체적인 공간 음향 효과를 재생할 수 있다.

 

Surround 5.1/7.1

채널 개수는 5개 이상이다.

전면 좌우, 중앙, 후면 좌우 + 서브 우퍼 채널을 통해 사운드가 재생된다.

 

Prologic DTS(Digital Theater System)

채널 개수는 2개이다.

스피커는 스테레오로 출력되지만 데이터는 Prologic/Prologic2 디코더에서 인식하고 5.1 채널 스피커로 분리되도록 인코딩 된다.

 

System Sample Rate

출력되는 샘플 레이트를 설정한다. 해당 수치를 조절하면 오디오 주파수의 표현 범위를 조정할 수 있다. 0으로 설정하면 시스템의 샘플 레이트를 사용하고 0 이외의 값을 설정하면 입력한 값을 샘플 레이트로 사용하게 된다. iOS나 Android와 같은 특정 플랫폼에서 샘플 레이트를 변경할 수 있는 경우에만 해당한다.

 

Sample Rate

샘플의 빈도수 즉, 1초당 추출되는 샘플의 개수를 뜻한다. 샘플 레이트의 수치가 높을수록 정확한 음원을 저장할 수 있지만 그만큼 용량이 기하급수적으로 증가한다. 이에 따라 적당한 타협선인 44.1kHz의 샘플 레이트가 일반적으로 사용된다. 

 

DSP Buffer Size

Digital Signal Processing 버퍼 크기

실시간으로 들어오는 오디오 데이터를 처리하고 재생하기 위해서 일시적으로 저장하는 공간의 크기를 설정한다.

Audio - DSP Buffer Size

해당 저장공간이 작으면 오디오 데이터가 빠르게 처리되지만 CPU 부하가 증가하고 지연 시간이 감소한다. 반면에 공간이 큰 경우에는 한 번에 더 많은 오디오 데이터가 처리되므로 CPU부하가 감소하고 지연 시간이 증가한다.

 

DSP Buffer Size

Default

유니티의 기본 DSP 버퍼 크기를 사용한다. 대부분의 경우 적절한 응답성과 지연 시간을 제공하는 안정적인 설정이다.

 

Best latency

지연 시간을 고려하여 성능을 절충한다. 더 낮은 지연 시간이 요구되는 실시간 애플리케이션에 적합하다. CPU 부하가 증가할 수 있고 낮은 CPU 성능에서는 문제가 발생할 수 있다.

 

Good latency

지연 시간과 CPU 성능의 균형을 유지한다. 일반적인 오디오 처리 요구 사항을 충족하는데 적합하다.

 

Best performance

CPU 성능을 유리하도록 지연시간을 맞춘다. 높은 오디오 처리 요구 사항이 있거나 더 많은 CPU 성능을 활용해야 하는 경우에 적합하며 지연 시간이 증가할 수 있다.

 

Max Virtual Voices

Audio - Max Virtual Voices

오디오 시스템이 관리할 수 있는 최대 사운드의 개수를 설정한다. Real Voices의 수보다 크게 설정되어야 하며 그렇지 않은 경우 콘솔에서 경고 메시지가 표시된다. 가장 큰 소리들 중에서 Max Real Voices 수만큼만 실제로 재생되고 나머지 소리들은 재생 위치만 업데이트된다.

 

Max Real Voices

Audio - Max Real Voices

게임에서 동시에 재생 가능한 실제 음성의 수를 설정한다. 매 프레임마다 가장 큰 음성이 선택된다.

 

Spatializer Plugin

Audio - Spactializer Plugin

공간화된 오디오 처리를 수행하기 위한 플러그인이다. 오디오를 공간적으로 위치시키고 음향 효과를 적용하여 3D 소리의 현실감을 높이는 데 사용된다.

 

일반적으로 게임 엔진이나 오디오 미들웨어에서 제공되며 다양한 기능과 설정을 제공한다. 오디오 원본의 위치, 방향, 거리 등을 고려하여 소리를 공간 내에서 정확하게 재생할 수 있으며 일반 스피커 시스템이나 헤드폰을 사용하는 경우, 소리가 사용자 주변에서 움직이거나 공간의 특정 위치에서 들리는 것처럼 느껴지게 된다.

 

해당 기능을 사용하기 위해서는 해당 플러그인의 최신 SDK 설치가 필요하다.

현재 버전을 기준으로 공식문서에서 안내되는 플러그인 다운링크

 

Ambisonic Decoder Plugin

Audio - Ambisonic Decoder Plugin

Ambisonic을 Binaural 필터링하기 위한 플러그인을 설정할 수 있다.

유니티에서 제공되는 빌트인 디코더는 없으며 일부 VR 하드웨어 제조사의 경우 오디오 SDK에 유니티용 빌트인 디코더가 있다. 타깃 플랫폼 제조사의 문서를 통해 프로젝트에 적합한지 확인할 수 있다.

 

Ambisonic 오디오 클립을 임포트 하려면 임포트 한 파일의 Ambisonic 옵션을 체크해야 한다.

Import Ambisonic Audio Clip

Ambisonic 클립을 사용하기 위해서는 Audio Source 컴포넌트의 Spatialize 옵션을 비활성화해야 하고 해당 클립이 재생될 때 자동으로 프로젝트에서 선택된 플러그인을 통해서 디코딩된다.

 

Ambisonic

다중 마이크로폰 배열을 사용하여 소리의 공간 정보를 캡처하는 방법이다. 소리의 방향, 거리, 공간 위치 등을 캡처하여 공간적으로 정확한 사운드 재생을 가능하게 한다. 일반적으로 360도 환경 음향을 재현하거나 VR 및 3D 오디오 환경에서 사용된다. 다중 채널 포맷으로 저장되고 Ambisonic을 사용하면 각 채널을 특정 스피커에 매핑하지 않고 사운드필드가 더 전체적인 방법으로 표현된다. 

Binaural

인간의 이중귀를 모방하여 소리를 전달하는 기술이다. 두 개의 이어폰 또는 헤드폰을 사용해서 소리를 개별적으로 각 귀에 전달함으로 공간적인 사운드 경험을 제공한다. 3D 오디오를 더욱 현실적이고 공간적으로 인지할 수 있도록 한다.

 

Disable Unity Audio

Disable Unity Audio

런타임에 출력 장치를 할당하지 않도록 설정한다. 내장된 오디오 시스템 이외의 다른 사운드 시스템을 사용하는 경우에 활성화하는 옵션이다. 

 

Enable Output Suspension (editor only)

Enable Output Suspension

출력이 오랜 시간 동안 정지된 것이 감지되면 자동으로 오디오 출력을 일시 중단시킨다. 오디오 시스템을 중단하면 컴퓨터가 절전 모드로 전환되는 것을 방지하는 운영 체제의 기능이 비활성화되고 이를 통해 오랜 시간 동안 정지된 오디오 출력으로 인해 컴퓨터가 절전 모드로 전환되는 것을 방지할 수 있다. 주로 배터리 수명을 연장하거나 오디오가 정지된 상태에서 시스템의 에너지 소비를 최소화하기 위해 사용된다.

 

해당 설정은 기본적으로 활성화되어 있다.

 

Visualize Effects

컬링 되는 오브젝트의 Audio Source에서 Spatializer를 동적으로 비활성화하여 CPU를 절약한다. 

즉 카메라에 의해 렌더링 되지 않는 오브젝트에 대한 오디오 처리를 제한시킨다.

728x90
반응형

+ Recent posts