글쓴이 보관물: Toughman

Razer Orochi V2 (화이트)

Razer Orochi V2 (화이트) 구매는 개인적인 기호로 선택했습니다. 별도의 지원을 받은 사실이 없습니다.

개요

기존에 쓰던 G304 마우스가 왼쪽 클릭이 잘 되지 않아 임시로 다른 것을 사용하고 있었습니다. 다른 마우스를 알아보고 있던 중 한 사무실에서 Razer Orochi V2 (화이트) 마우스를 보게되었습니다. 구매 후보에 있기는 했는데 실제로 본 적이 없어서 망설이고 있었습니다. 잠깐 사용해 보니 손이 작은 필자에게 잘 맞을 것 같고 하얀색과 디자인이 마음에 들어 구매하게 되었습니다.

제품 상자

Razer Orochi V2 (화이트) 제품 상자
Razer Orochi V2 (화이트) 제품 상자

마우스가 작아서 그런지 생각보다 제품 상자가 작았습니다.

우측면
우측면
뒷면
뒷면

이 마우스는 위 설명에서와 같이 배터리를 AA/AAA 를 사용할 수 있습니다. 한번에 같이 사용할 수는 없고 둘 중에 하나만 사용할 수 있습니다. 무게를 줄이려면 AAA 건전지를 이용하면 됩니다.

그리고 두가지 무선모드를 지원하므로 상황에 따라 선택해서 사용하면 됩니다. 필자는 Hyper Speed Wireless 모드로만 사용해 보았는데 끊기는 느낌없이 무난했습니다.

좌측면
좌측면

배터리 별로 대략의 사용 시간과 무게가 표시되어 있는 것은 꼭 맞지는 않겠지만 참고할 수 있어 좋았습니다.

개봉

개봉해 보니 설명서와 제품이 들어 있습니다. 언제나 그렇듯 설치가 어렵지 않으니 설명서는 읽지 않았습니다.

제품 설명서
제품 설명서

안쪽 상자를 보니 품질이 좋은 건전지와 Razer Orochi V2 (화이트) 마우스가 들어 있습니다.

마우스 꺼내기 전 상태
마우스 꺼내기 전 상태

마우스를 꺼내보니 위쪽 커버가 전체적으로 매끈하지 않고 약간 거친 느낌을 주는 질감입니다. 사용자에 따라 호불호가 있을 것 같은데 필자는 클릭할 때 미끄러지지 않아 좋았습니다. 깔끔한 하얀색상이 마음에 들었습니다.

AA 건전지와 크기 비교
AA 건전지와 크기 비교
아랫면 모습
아랫면 모습

커버를 열어보니 건전지를 사선으로 넣을 수 있게 되어 있습니다. 동봉된 건전지를 넣었습니다.

위쪽 커버를 연 모습
위쪽 커버를 연 모습

크기 비교

각 마우스만 보고는 체감이 되지 않았는데 같이 놓고 보니 Razer Orochi V2 (화이트) 제품이 작다고 느껴졌습니다.

Razer Orochi V2 (화이트), KATAR PRO Wireless, G304 크기 비교
Razer Orochi V2 (화이트), KATAR PRO Wireless, G304 크기 비교

소프트웨어

Razer 홈페이지에서 다운로드 후 설치(RAZER SYNAPSE)하면 마우스의 설정을 변경할 수 있습니다. 필자의 느낌으로는 약간 무거운 듯 느껴졌는데 설치 후 문제는 일으키지 않았습니다. 여러가지 설정을 사용자의 필요에 따라 변경할 수 있습니다. 개인적으로 선명한 초록색으로 포인트를 준 디자인이 마음에 들었습니다.

장점

가볍고 커버가 매끈한 재질이 아니어서 쉽게 미끄러지지 않았습니다. 그리고 하얀 색상의 디자인이 필자에게는 마음에 들었습니다.

단점

커버가 일체형으로 되어 있어서 손가락으로 클릭하는 앞쪽이 가끔 위쪽으로 들리는 느낌이 들었습니다. 필자의 습관 때문인지 마우스 구조때문인지는 모르겠지만 살짝 불편함이 느껴졌습니다.

마우스가 전절모드를 들어갔다가 다시 활성화되는데 일관성이 없습니다. 소프트웨어의 문제인지 다른 문제인지 알 수 없었습니다. 빨리 활성화 될때도 있기는 하지만 대부분 한참 시간이 지연된 후 마우스 커서가 움직였습니다. 빨리 활성화 될때도 바로 되는 것이 아니라 시간 지연이 항상 있는 것은 불편했습니다.

전반적으로 만족했지만 절전모드에서 깨어나는 부분은 개선이 필요할 것으로 생각됩니다.

유니티(Unity) C# 스크립트를 이용한 게임 관련 변수 관리

개요

게임 내 여러 요소를 제어하기 위해 많은 변수가 필요합니다. 우주 슈팅 게임을 예로 들어본다면 플레이어, 적, 보스 등등 각 객체에 고유한 특성을 정의하는 값이 존재합니다. 이런 변수 값을 체계적으로 잘 정리해 두어야 테스트 및 난이도 조절할 때 쉽게 변경할 수 있습니다.

변수값을 관리하는 방법이 여러가지(DB, File…)가 있습니다. 이번 글에서는 C# 스크립트를 이용해 보도록 하겠습니다.

변수 관리 스크립트

각종 변수 정보를 담을 C# 스크립트를 생성합니다(Create > C# Script). 아래 코드와 같은 형태로 내용을 입력합니다.

public class GameControlData : MonoBehaviour
{
    public static GameControlData GAME_CONTROL_DATA;

    void Awake()
    {
        if (GAME_CONTROL_DATA == null) 
        {
            DontDestroyOnLoad(gameObject);
            GAME_CONTROL_DATA = this;
        } 
    }
}

Awake 메소드에 DontDestoryOnLoad 를 이용해서 다른 Scene 에서도 사용할 수 있도록 해 줍니다. 그리고 정적변수로 정의한 GAME_CONTROL_DATA 가 비어 있는 경우 this 로 대입해 줍니다.

GameObject 생성 및 스크립트 적용

빈 게임 오브젝트를 하나 만들고 Scene에 배치합니다. 여기에 위에서 생성한 스크립트를 붙여줍니다. 그러면 다음과 같은 상태가 됩니다.

빈 오브젝트를 생성하고 스크립트를 부착한 상태
빈 오브젝트를 생성하고 스크립트를 부착한 상태

필요한 변수들을 다음 코드와 같이 스크립트에 추가하면 다음과 같이 에디터에서 변수가 나타나는 것을 확인할 수 있습니다.

public static GameControlData GAME_CONTROL_DATA;

public float playerSpeed;
public float enemySpeed;
public int itemType;

void Awake()
{
    if (GAME_CONTROL_DATA == null)
    {
        DontDestroyOnLoad(gameObject);
        GAME_CONTROL_DATA = this;
    }
}
변수 추가 후 에디터에서 변경된 상태
변수 추가 후 에디터에서 변경된 상태

이제 에디터에서 변수의 값을 변경할 수 있습니다. 이 경우 에디터에서 지정된 값이 적용됩니다. 조정을 통해 변수의 값을 확정한 후 원래 스크립트의 값을 변경하면 됩니다.

다른 스크립트에서 참조

다른 스크립트에서는 다음 코드와 같은 형식으로 참조합니다.

using static GameBaseData;

GAME_CONTROL_DATA.playerSpeed = 1.0f;

using static 지시문을 이용해서 축약된 형태로 변수를 참조할 수 있도록 합니다.

유형별 변수 정리

변수가 많아지면 각 분류별로 정리된 것이 관리하기 편합니다. 다음과 같이 변수를 유형별로 나누어 에디터에서 구분되어 나타나도록 할 수 있습니다.

[Header("Player Setting")]
public float playerSpeed;
public float playerPower;

[Header("Enemy Setting")]
public float enemySpeed;

[Header("Item Setting")]
public int itemType;
[SerializeField]
private int itemPower;
변수를 분류한 후 에디터의 상태
변수를 분류한 후 에디터의 상태

변수가 private 라도 [SerializeField]로 지정하면 에디터에 나타나 쉽게 변경할 수 있습니다.

이번글에서는 간단한 게임의 변수 항목을 게임 오브젝트에 C# 스크립트를 붙여 손쉽게 관리하는 방법을 알아보았습니다.