Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- registerForActivityResult
- Java
- map
- Vector
- 게임개발
- unorderedset
- NotFoundException: String resource ID #0x0
- 광유다
- 안드로이드스튜디오
- list
- ARface
- semaphore
- 유니티
- SpinLock
- 지크슈
- C++
- 바이너리세마포
- 스핀락
- unityAR
- 포톤
- photon
- 뮤텍스
- mutex
- unorderedmap
- 유니티슈팅게임
- Unity
- 동기화
- 세마포
- dependencyResilutionManagement
- StartActivityForResult
Archives
- Today
- Total
와와
[ Unity 슈팅게임 ] 5. 움직이는 배경, 메뉴 씬, 실행 화면 본문
1. 움직이는 배경 ( Matarial offset 설정 )
이렇게 끝없이 이어지는 것 같은 배경을 만들고자 한다.
우선 배경으로 쓸 이미지를 Material 로 만들어야 함
Material 을 하나 생성하여 MainMaps - Albedo 에 원하는 이미지를 넣어 저장한다.
저기 하마 스티커가 붙어있는 부분(offset)을 조절하면 지구본처럼 화면이 제자리에서 돌아간다
오브젝트에 해당 Material 을 입히고 스크립트에서 offset을 조절해주면 끝
이렇게 오브젝트에 Material을 넣어주고
< BG.cs >
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BG : MonoBehaviour
{
public float scrollSpeed = 0.1f;
public Material material;
private Vector2 currentOffset;
// Start is called before the first frame update
void Start()
{
material = this.GetComponent<Renderer>().material;
currentOffset = material.GetTextureOffset("_MainTex");
}
// Update is called once per frame
void Update()
{
currentOffset += new Vector2(Time.deltaTime * scrollSpeed, 0);
material.SetTextureOffset("_MainTex",currentOffset);
}
}
스크립트에서 Offset의 x값이 계속 증가하도록 해준다.
2. 메뉴 씬 ( 닉네임 입력창, 게임 시작/종료 버튼 )
게임을 실행하면 나오는 첫 씬은 메뉴씬으로 다음과 같다
( 타이틀이 킹받는다면 죄송합니다.. )
중앙에 보이는 입력창에 닉네임을 입력하고 START 버튼을 누르면
PlayerPrefs을 이용해 닉네임을 저장하고 게임씬(Start)으로 넘어가게 된다.
EXIT 버튼을 누르면 앱 자체가 종료된다.
InputField의 Character Limit에서 글자수도 6으로 제한해주었다.
< ButtonManager.cs >
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ButtonManager : MonoBehaviour
{
public Button StartBtn;
public Button ExitBtn;
public InputField playerNameInput;
private string playerName = null;
// Start is called before the first frame update
void Start()
{
Button StartB = StartBtn.GetComponent<Button>();
StartB.onClick.AddListener(StartBtnClick);
Button ExitB = ExitBtn.GetComponent<Button>();
ExitB.onClick.AddListener(ExitBtnClick);
playerName = playerNameInput.GetComponent<InputField>().text;
}
// Update is called once per frame
void Update()
{
}
// Start 버튼 누르면
void StartBtnClick()
{
InputName();
Debug.Log("등록한이름: "+PlayerPrefs.GetString("CurrentPlayerName"));
SceneManager.LoadScene("Start");
}
// Exit 버튼 누르면
void ExitBtnClick()
{
Application.Quit();
}
// 닉네임 입력
public void InputName()
{
playerName = playerNameInput.text;
if(playerName == "")
{
playerName = "NoName";
}
PlayerPrefs.SetString("CurrentPlayerName", playerName);
PlayerPrefs.Save();
}
}
< 실행 화면 >
'개발 > Unity 3D' 카테고리의 다른 글
캐릭터 움직임 구현1: 유한상태머신(FSM) (1) | 2023.04.16 |
---|---|
[유니티] 유니버셜 랜더 파이프라인(URP) / 포스트 프로세싱 (1) | 2023.01.21 |
[ Unity 슈팅게임 ] 4. 게임 오버, 스코어 기록, 랭킹 (0) | 2022.08.20 |
[ Unity 슈팅게임 ] 3. 마우스 클릭으로 총알 발사 (0) | 2022.08.20 |
[ Unity 슈팅게임 ] 2. 적 오브젝트/ 랜덤생성/ 충돌 설정 (0) | 2022.08.19 |