오늘은 게임에 내가 직접만든 UI를 삽입해보려합니다

게임을 내맘대로 애무 주무르는것이죠

크흠!

먼저 Unity3D 엔진을 설치해줍니다

무료로 풀려있으니 그냥 아무버전이나 다운받으면 됩니다

자. 설치가 끝났으면 빈 프로젝트를 생성해 스크립트를 하나 만들어볼까요

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

public class monkeyMenu : MonoBehaviour
{
    private void Start()
    {
        OnGUI(); //시작시 GUI를 화면에 호출한다
    }
    public static bool showmenu;
    public static string string1;
    public static bool ShowHide = false;
    public void OnGUI() // GUI메소드
    {       
        if (GUI.Button(new Rect(100, 20, 140, 40), "보이기/숨기기"))
        {
            ShowHide = !ShowHide;
        }
        if (ShowHide)
        {
            //1번째버튼
            GUI.Box(new Rect(100, 70, 250, 130), "코드몽키치트");
            if (GUI.Button(new Rect(105, 100, 240f, 30f), string1))
            {
                showmenu = !showmenu;
            }
            if (showmenu)
            {
                string1 = "구글에서 <color=green>코드몽키버그판</color> 검색";
                showmenu = false;
            }
            else
            {
                string1 = "네이버에서 <color=red>코드몽키버그판</color> 검색";
                showmenu = true;
            }
            //2번째버튼
            if (GUI.Button(new Rect(105, 140, 240f, 30f), string1))
            {
                showmenu = !showmenu;
            }
            if (showmenu)
            {
                string1 = "구글에서 <color=green>코드몽키버그판</color> 검색";
                showmenu = false;
            }
            else
            {
                string1 = "네이버에서 <color=red>코드몽키버그판</color> 검색";
                showmenu = true;
            }

            GUI.Box(new Rect(100, 200, 250, 30), "주변친구들에게 많은 홍보 부탁드립니다"); // 크흠!
            GUI.Box(new Rect(100, 230, 250, 30), "블로그 광고는 하루 한번만 눌러주세요"); //뿌잉뿌잉
            if(GUI.Button(new Rect(100, 260, 250, 60), "Https://www.monkeycheat.com"))
            {
                Application.OpenURL("Https://www.monkeycheat.com"); //요걸 누르면 블로그로 이동하는 링크를 걸자!
} } } }

요로케 살짝 키보드를 쳐주고, 유니티 에디터에 어떻게 출력되는지 한번 볼까요?

우왕 굳ㅋ

이제 완성된 UI를 게임에 적용해볼까요?

스크립트 적용은 게임이 실행되고 부서지지않는 오브젝트를 찾아 해당 클래스의 Start() 메소드에 넣어주시면 됩니다

해당 UI 기능을 응용한다면 게임내 실시간 ON/OFF 치트기능을 구현할수 있겠죠?

UI 에서 치트기능을 토글로 구현해서

치트 ON = 데미지 x 999 배

치트 OFF = 일반 데미지

이런식으로..해킹 내용은 공격자의 마음대로~♬

유니티에서는 스크립트 생성시 기본적으로 제공되는 함수가 두개 있습니다

Start() 와 Update() 인데요

Start() 는 그 클래스가 생성되고 첫 프레임이 시작될때 딱 한번 호출되는 메소드,
Update()는  매 프레임마다 계~~속 호출되는 매소드입니다 그러니 1초에 수십번 호출되겠죠

각 클래스마다 개발자가 의도적으로 저 메소드 들을 지우지않는한 저 두 메소드는 항상 붙어있습니다
즉 게임이 실행 되고나서 유저가 해당 앱을 종료하기전까지 부서지지않는 오브젝트

예를들자면 BGM 을 담당하는 사운드매니저격 클래스 등이 있겠네요
모든 게임에 소리를 관장하는 클래스는 씬이 이동한다하더라도 부서지지않도록 구현해놨을것이고,-dontdestroyonload 혹은 싱글톤등으로 구현을..(씬이 바뀌어도- 화면전환이 이루어져도 – BGM이나 각종 효과음의 정보가 담긴 컴포넌트가 날아가면 안되니,)  게임이 꺼지기 전까지 그 BGM등의 소리를 구현하기위한 컴포넌트를 달아둔 클래스는 게임을 종료시키기 전까지 사라지지않는 클래스니 이곳의 Start() 안에 저런 UI 코드를 박아둔다면 게임이 꺼지기 전까지 항상 UI가 따라다니겠죠 아무리 화면을 전환해도 사라지지않구요^^

위의 사운드클래스는 어디까지나 예시로 든것뿐이고 게임마다 게임실행직후 -> 게임종료까지 부서지지않는 오브젝트를 어떤클래스로 구현해놨는지는 개발자 마음이니 게임마다 다를수있습니다

다운로드문제, 패키지파싱문제, 실행안됨 문제는 공지사항에 해결법있습니다.

업데이트 요청은 리플로 남겨주시면 됩니다

LEAVE A REPLY

Please enter your comment!
Please enter your name here