OS : Window 11
Version : 2021.3.16f1
지난번에 만들었던 것에 추가해보려 합니다.
https://roomdev-diary.tistory.com/84
저번에 새 게임과 종료하기를 했으니 이번엔 불러오기와 설정을 해보려 합니다.
먼저 설정을 만들어 보려 합니다.
설정에.. 필요한 것.....소리...닫기.. 또 뭐가 있죠? 음...일단 이렇게만 해봅시다.
아직 무슨 게임을 만들지 생각을 안해서 모르겠네요.
그러면 캔버스에 소리와 닫기를 만들어봅시다. 확인?버튼도 있어야 겠군요
그러면 저는 플래티콘에서 닫기 버튼과 소리 아이콘을 다운받겠습니다.
그리고 제가 선호하는 방법입니다만 이런 아이콘들은 흰색으로 하는걸 추천합니다.
물론 그대로 사용해도 되지만 색을 변경해야 할 때, 흰색으로 해놓으면 유니티에서 바로 바꿔서 확인할 수 있기 때문에 저는 흰색으로 변경하는걸 선호 하는 편입니다.
저는 gimp라는 무료 툴을 사용해서 수정하였습니다.(원하시면 관련된 것도 올려보겠습니다.)
음... 저는 여기서 소리 변경 값에 따라 저 파형 아이콘이 생겨나고 줄었으면 좋겠습니다.
그래서 쪼개서 하나씩 저장하였습니다.
저는 MenuImages라는 폴더를 만들고 넣어줬습니다.
그리고 이미지를 클릭하셔서 인스펙터창에 Texture Type/Sprite를 클릭해서 바꿔줍니다.
설정 버튼을 누르면 설정 창이 나와야겠죠?
그러기 위해서 이미지하나를 생성하고 SettingWindow라고 이름 짓겠습니다.
크기는 적당히 맞춰주시고.....
저는 오른쪽 상단에 닫기, 하단에는 확인, 가운데 소리를 조절하는 버튼을 두려 합니다.
SettingsWindow을 parents로 하여 Button과 Slider를 만들어 줍니다.
이제 제가 오른쪽 상단, 하단, 이런식으로 얘기했는데, 그 이유는 Rect Transform의 pivot과 관련이 있습니다
이런식으로 지정해 두면 사이즈가 변경되거나 해도 조절하기가 편해질 뿐더러, 해상도가 다른 기기에서 동작될때도 흩어져 있는게 아닌 왠만하면 그 자리에 있게 됩니다.
근데 뭔가 설정창이 열렸는데 뒤가 색이 그대로라 별로네요 border를 추가합시다.
다음과 같이 추가해주시고 SettingBorder에는 이미지 컴포넌트를 추가하여 전체화면으로 만들어줍니다.
그러면 다음과 같이 나타납니다. 근데 버튼이 조금 달라져 있죠? 이미지를 넣어서 그렇습니다.
Sprite가 있는 폴더에서 버튼의 이미지를 넣어줍니다. 그리고 밑에 컬러가 있죠? 여기서 이제 아이콘을 흰색으로 억지로 만들 이유가 나타납니다!!!
이렇게 바로바로 다양하게 바꿀 수 있습니다. 좋죠?
자 이제 스피커 동작을 해봅시다.
생성했던 슬라이더에 Parents게임오브젝트를 만들고 이미지를 2개 만들어줍니다.
그리고 각각 Speaker와 SpeakerWave라고 이름을 지어 줍니다.(둘의 위치는 똑같은 곳에 놔주세요)
그리고 이전에 만들었던 MeneButtons.cs에 아래 처럼 수정합니다.
그리고 설정 버튼에 이벤트를 넣어 줍니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class MenuButtons : MonoBehaviour
{
[SerializeField]
public GameObject SettingWindow;
public void NewGame()
{
int index = SceneManager.GetActiveScene().buildIndex;
SceneManager.LoadScene(index + 1);
}
public void QuitGame()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
public void Settings()
{
SettingWindow.SetActive(true);
}
}
그리고 설정 창에 대한 버튼을 컨트롤하는 스크립트를 작성합니다. 저는 MenuSettingWindow라고 이름 지었습니다.
다음과 같이 작성하였습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MenuSettingWindow : MonoBehaviour
{
public Slider slider;
public Image soundWaveImg;
public List<Sprite> soundWaves;
// Start is called before the first frame update
public void soundVolume()
{
if (slider.value == 0) soundWaveImg.sprite = soundWaves[0];
else if (slider.value < 0.25) soundWaveImg.sprite = soundWaves[1];
else if (slider.value < 0.5) soundWaveImg.sprite = soundWaves[2];
else if (slider.value >= 0.75) soundWaveImg.sprite = soundWaves[3];
}
public void CloseMenu()
{
gameObject.SetActive(false);
}
public void SaveSettingData()
{
print("Save");
gameObject.SetActive(false);
}
}
슬라이더의 인스펙터를 내리다 보면 On Value Changed라는게 보일 겁니다.
말 그대로 값이 바뀔 때마다 호출되는 이벤트를 정해주는 곳 입니다. 버튼 이벤트처럼 넣어 주시면 됩니다.
(닫기 버튼과 저장 버튼도 추가합니다.)
그리고 실행해보면 움직이는걸 보실 수 있습니다.
오늘은.. 여기까지만 하려합니다.
데이터저장은 지금 json으로 할지 아니면 처음부터 파이어베이스로 해버릴지 고민중입니다.
근데 이런 과정을 유튜브에 올리면 괜찮을까요?
끝까지 봐주셔서 감사합니다.
아래는 저의 크몽입니다.
유니티 기반 게임,앱 개발해 드립니다. | 1000000원부터 시작 가능한 총 평점 0점의 IT·프로그래밍,
0개 총 작업 개수 완료한 총 평점 0점인 민또배기의 IT·프로그래밍, 2D·3D 게임 서비스를 0개의 리뷰와 함께 확인해 보세요. IT·프로그래밍, 2D·3D 게임 제공 등 1000000원부터 시작 가능한 서비스
kmong.com
'유니티 > UI' 카테고리의 다른 글
유니티 시작메뉴 구성하기 (Creating Unity Start Menu) - 새게임과 종료하기 (2) | 2023.03.07 |
---|---|
유니티 텍스트 메쉬 프로(Text Mesh Pro)한글 사용하기 (0) | 2023.03.07 |
유니티 UI - infinite scroll (0) | 2022.05.24 |
Unity TabMenu (0) | 2022.05.16 |
유니티 이중 스크롤 뷰 (0) | 2022.04.18 |