좀 그림이 난잡하지만 대충 와이어프레임을 짰다.
https://gitmind.com/ 을 이용했다.
위에 있는 차트를 기반으로 칸반보드를 제작하고
사운드 매니저 싱글톤 선언을 해주고
[SerializeField] private AudioSource _bgmPlayer; //배경음악
[SerializeField] private AudioSource _sefPlayer; //효과음
[SerializeField] private AudioClip[] _bgm;
[SerializeField] private AudioClip[] _sef;
private static SoundManager instance;
public static SoundManager Instance
{
get
{
if(instance == null)
{
instance.GetComponent<SoundManager>();
if (instance == null)
{
GameObject obj = new GameObject();
obj.name = typeof(SoundManager).Name;
instance = obj.AddComponent<SoundManager>();
}
}
DontDestroyOnLoad(instance);
return instance;
}
}
기능을 추가해주었다.
private void Awake()
{
if (instance != null)
{
Destroy(gameObject);
}
else
{
instance = this;
DontDestroyOnLoad(instance);
}
}
private void Start()
{
/*PlayBgm("기본 배경음악 이름");*/
}
private void PlayBgm(string soundName)
{
for (int i = 0; i < _bgm.Length; i++)
{
if (_bgm[i].name == soundName)
{
_bgmPlayer.clip = _bgm[i];
_bgmPlayer.Play();
return;
}
}
}
private void StopBgm()
{
_bgmPlayer.Stop();
_bgmPlayer = null;
}
private void PlaySef(string soundName)
{
for (int i = 0; i < _sef.Length; i++)
{
if (_sef[i].name == soundName)
{
_sefPlayer.clip = _bgm[i];
_sefPlayer.Play();
return;
}
}
_sefPlayer = null;
}
오디오 소스를 하나만 두면 효과음이 재생되면 배경음악이 끊기므로 두개를 두어서
배경음악이 재생되는 동안 효과음이 재생될 수 있도록 했다. ㅅㅁㅅ님 감사합니다..
팀프로젝트 진행하는 동안 수많은 버튼들이 우후죽순 생겨나는 바람에
public class SceneMoveButton : MonoBehaviour
{
public enum SceneName
{
StartScene,
TitleScene,
CharacterSelectScene,
MainScene,
ScoreScene,
}
public SceneName sceneName;
public void ChangeScene()
{
SceneManager.LoadScene(sceneName.ToString());
}
}
이 스크립트를 추가하여
요렇게 만들어서 딸깍 만으로 이동 할 수 있는 씬을 선택할 수 있게 만들었다.
아직 캐릭터에 무슨 스탯이 필요할지 정확히 정해지지 않아서
여러개의 SO 파일을 작성했다.
하나만 살펴보자면
[CreateAssetMenu(fileName = "Bullet Default Stat", menuName = "Stat/Bullet/Default", order = 0)]
public class BulletDefaultStat : ScriptableObject
{
[Header("Default Stat")]
public string BulletTag;
public float Speed;
public float Delay;
public int Damage;
public float Size;
public float Spread;
public int NumberOfProjectiles;
}
이런식으로 작성되어서
이렇게 추가되며
이렇게 내부 내용을 작성할 수 있게 끔 만들어서 오브젝트에 public "필요한 스탯이름" stat;을 입력하여
해당 SO 파일을 추가해준다면 본문에 추가하거나 클래스를 따로 만들 필요 없이 내용을 작성 가능하다.
TTE
1017 TIL - 씬 전환 시 정보 이동 (0) | 2024.10.17 |
---|---|
1016 TIL - Unity InputSystem 심화 (5) | 2024.10.16 |
1014 TIL - Unity 애니메이터 갈아끼우기 (0) | 2024.10.14 |
1011 TIL - Unity 오브젝트 풀링 (1) | 2024.10.12 |
1007 TIL - 유니티 InputSystem (5) | 2024.10.07 |