Skip to content

develop OptionUI

Yoo Hyeokjin edited this page Jun 28, 2023 · 5 revisions

OptionUI

목차

완성본

image

완성 Hierarchy

  • OptionUI는 Prefab이다.

image

Script

  • 알게된 점 : Time.timeScale이 0이면 게임이 멈추고 1이면 1배속으로 게임 시간이 흘러간다.

  • 변수 선언

[SerializeField] MiniLevels[] mWeaponLevelsUI;       // Items의 Weapon의 Level을 표시해주는 Object
[SerializeField] Image[] mOwnWeaponImages;           // Items의 Weapon의 Image를 표시해주는 Object
[SerializeField] MiniLevels[] mAccessoryLevelsUI;    // Items의 Accessory의 Level을 표시해주는 Object
[SerializeField] Image[] mOwnAccessoryImages;        // Items의 Accessory의 Image를 표시해주는 Object
 
[SerializeField] GameObject mItemUI;                 // Items Object
[SerializeField] GameObject mStatUI;                 // Stat Object
[SerializeField] GameObject mOptionPageUI;           // OptionPage Object
[SerializeField] GameObject mOptionButtonUI;         // Option(옵션) Button Object
[SerializeField] GameObject mBackButtonUI;           // Back(계속하기) Button Object
[SerializeField] GameObject mQuitButtonUI;           // Quit(종료) Button Object
[SerializeField] GameObject mPlayer;                 // Player Object

[SerializeField] TextMeshProUGUI mStatVarText;       // Stat Value를 표시하는 Object

[SerializeField] Sprite[] mWeaponImages;             // Weapon별 이미지
[SerializeField] Sprite[] mAccessoryImages;          // Accessory별 이미지
[SerializeField] Sprite[] mEtcImages;                // etc별 이미지
[SerializeField] Sprite[] mMiniLevelImages;          // MiniLevel의 이미지
  • Scene이 시작시 OptionUI를 감추는 코드
private void Awake()
{
    mItemUI.SetActive(false);
    mStatUI.SetActive(false);
    mOptionPageUI.SetActive(false);
    mOptionButtonUI.SetActive(false);
    mBackButtonUI.SetActive(false);
    mQuitButtonUI.SetActive(false);
    UnSetItemUI();
}
  • Esc키를 이용해 OptionUI를 열고 닫는 코드
private void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        if(!mbPauseGame)
        {
            var weapons = GameManager.instance.EquipManageSys.Weapons;
            var accessories = GameManager.instance.EquipManageSys.Accessories;
            var characterStats =  GameManager.instance.CharacterStats;
            Time.timeScale = 0f;     // 시간을 멈추게 하는 코드
            mItemUI.SetActive(true);
            mStatUI.SetActive(true);
            mOptionButtonUI.SetActive(true);
            mBackButtonUI.SetActive(true);
            SetItemUI(weapons, accessories);
            SetStatUI(characterStats);
            mPlayer.GetComponent<PlayerMovement>().enabled = false;
            mbPauseGame = true;
        }
        else
        {
            mItemUI.SetActive(false);
            mStatUI.SetActive(false);
            mOptionPageUI.SetActive(false);
            mOptionButtonUI.SetActive(false);
            mBackButtonUI.SetActive(false);
            mQuitButtonUI.SetActive(false);
            Time.timeScale = 1f;    // 시간을 다시 흐르게 하는 코드
            mPlayer.GetComponent<PlayerMovement>().enabled = true;
            mbPauseGame = false;
        }
        
    }
}
public void Resume()
{
    if(EventSystem.current.IsPointerOverGameObject())
    {  
        mItemUI.SetActive(false);
        mStatUI.SetActive(false);
        mOptionPageUI.SetActive(false);
        mOptionButtonUI.SetActive(false);
        mBackButtonUI.SetActive(false);
        mQuitButtonUI.SetActive(false);
        Time.timeScale = 1f;
        mPlayer.GetComponent<PlayerMovement>().enabled = true;
    }
}
  • Items를 세팅하는 코드
public void SetItemUI(List<Weapon> weapons, List<Accessory> accessories)
{
    SetWeaponUI(weapons);
    SetAccessoryUI(accessories);
}
private void SetWeaponUI(List<Weapon> weapons)
{
    for (int i = 0; i < weapons.Count; i++)
    {
        mOwnWeaponImages[i].sprite = mWeaponImages[weapons[i].WeaponIndex];
        mOwnWeaponImages[i].enabled = true;

        int j = 0;
        for (; j < weapons[i].WeaponLevel; j++)
        {
            mWeaponLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[1];
            mWeaponLevelsUI[i].MiniLevel[j].enabled = true;
        }
        for (; j < weapons[i].WeaponMaxLevel; j++)
        {
            mWeaponLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[0];
            mWeaponLevelsUI[i].MiniLevel[j].enabled = true;
        }
    }
}
private void SetAccessoryUI(List<Accessory> accessories)
{
    for (int i = 0; i < accessories.Count; i++)
    {
        mOwnAccessoryImages[i].sprite = mAccessoryImages[accessories[i].AccessoryIndex];
        mOwnAccessoryImages[i].enabled = true;

        int j = 0;
        for (; j < accessories[i].AccessoryLevel; j++)
        {
            mAccessoryLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[1];
            mAccessoryLevelsUI[i].MiniLevel[j].enabled = true;
        }
        for (; j < accessories[i].AccessoryMaxLevel; j++)
        {
            mAccessoryLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[0];
            mAccessoryLevelsUI[i].MiniLevel[j].enabled = true;
        }
    }
}
  • Stat을 세팅하는 코드 -> Stat과 관련된 문서
public void SetStatUI(float[] characterStats)
{
    mStatVarText.text =
        (GameManager.instance.CharacterData.MaxHealth * characterStats[(int)Enums.EStat.MaxHealth]).ToString() + "\n" +
        ((int)(characterStats[(int)Enums.EStat.Recovery] * 10) == 0 ? "-" : "+" +(characterStats[(int)Enums.EStat.Recovery]).ToString()) + "\n" +
        ((int)(characterStats[(int)Enums.EStat.Armor]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Armor])).ToString()) + "\n" +
        ((int)((characterStats[(int)Enums.EStat.MoveSpeed] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.MoveSpeed] - 1) * 100 )).ToString() + "%") + "\n\n" +
        ((int)((characterStats[(int)Enums.EStat.Might] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Might] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)((characterStats[(int)Enums.EStat.ProjectileSpeed] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.ProjectileSpeed] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)((characterStats[(int)Enums.EStat.Duration] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Duration] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)((characterStats[(int)Enums.EStat.Area] - 1) * 100 ) == 0 ? "-" : ((int)((characterStats[(int)Enums.EStat.Area] - 1)) == 0 ? "+" + ((int)((characterStats[(int)Enums.EStat.Area] - 1) * 100)).ToString() + "%" : "+" + ((int)(characterStats[(int)Enums.EStat.Area] * 100)).ToString() + "%")) + "\n\n" + // 초기 공격 범위가 1이 아닌 4일 때 즉 400% 일 때 300%로 표기되는 것을 막기 위해서 if문 하나 더 사용
        ((int)((characterStats[(int)Enums.EStat.Cooldown] - 1) * 100 ) == 0 ? "-" : ((int)((characterStats[(int)Enums.EStat.Cooldown] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)(characterStats[(int)Enums.EStat.Amount]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Amount])).ToString()) + "\n" +
        ((int)(characterStats[(int)Enums.EStat.Revival]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Revival])).ToString()) + "\n" +
        ((int)((characterStats[(int)Enums.EStat.Magnet] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Magnet] - 1) * 100 )).ToString() + "%") + "\n\n" +
        ((int)((characterStats[(int)Enums.EStat.Luck] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Luck] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)((characterStats[(int)Enums.EStat.Growth] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Growth] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)((characterStats[(int)Enums.EStat.Greed] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Greed] - 1) * 100 )).ToString() + "%") + "\n" +
        ((int)((characterStats[(int)Enums.EStat.Curse] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Curse] - 1) * 100 )).ToString() + "%") + "\n\n" +
        ((int)(characterStats[(int)Enums.EStat.Reroll]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Reroll])).ToString()) + "\n" +
        ((int)(characterStats[(int)Enums.EStat.Skip]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Skip])).ToString()) + "\n" +
        ((int)(characterStats[(int)Enums.EStat.Banish]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Banish])).ToString());
}
  • Sound와 EffectSound를 조절하는 코드
private void Start()
{
    // 저장된 볼륨 값 로드
    SoundManager soundManager = SoundManager.instance;

    // defaultPanel의 자식 요소들을 가져와서 슬라이더를 초기화
    Slider[] sliders = mOptionPageUI.GetComponentsInChildren<Slider>();
    foreach (Slider slider in sliders)
    {
        switch (slider.name)
        {
            case "BgmSlider":
                slider.value = soundManager.BgmVolume;
                slider.onValueChanged.AddListener(OnBgmVolumeChanged);
                break;
            case "SoundEffectSlider":
                slider.value = soundManager.SoundEffectVolume;
                slider.onValueChanged.AddListener(OnSoundEffectVolumeChanged);
                break;
        }
    }
}
private void OnBgmVolumeChanged(float value)
{
    SoundManager soundManager = SoundManager.instance;
    soundManager.BgmVolume = value;
    Debug.Log(soundManager.BgmVolume);
}
private void OnSoundEffectVolumeChanged(float value)
{
    SoundManager soundManager = SoundManager.instance;
    soundManager.SoundEffectVolume = value;
    Debug.Log(soundManager.SoundEffectVolume);
}

Canvas

  • OptionUI를 표시할 수 있는 Canvas

UI - Canvas를 선택한다.

InGame Scene에는 UI가 많으니 하나의 Canvas에 UI Prefab을 넣는다.

다음 그림과 같이 적용시킨다.

image

OptionUI

Create Empty를 선택한다.

다음 그림과 같이 세팅한다.

image

Items

  • 현재 보유하고 있는 무기, 장신구를 표시

image

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

ItemUI

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

WeaponLevels

image

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

WeaponLevel

Create Empty Children을 선택한다.

Horizontal Layout Group Component를 추가한다.

다음 그림과 같이 세팅한다.

image

WeaponGrid 6개

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

WeaponMiniLevel 9개

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

Weapons

image

Create Empty Children을 선택한다.

Horizontal Layout Group Component를 추가한다.

다음 그림과 같이 세팅한다.

image

Weapon 6개

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

AccessoryLevels

image

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

AccessoryLevel

Create Empty Children을 선택한다.

Horizontal Layout Group Component를 추가한다.

다음 그림과 같이 세팅한다.

image

AccessoryGrid 6개

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

AccessoryMiniLevel 9개

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

Accessories

image

Create Empty Children을 선택한다.

Horizontal Layout Group Component를 추가한다.

다음 그림과 같이 세팅한다.

image

Accessory 6개

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

Stat

  • 현재 player의 stat을 표시

image

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

StatUI

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

StatName

UI - TextMeshPro를 선택한다.

다음 그림과 같이 세팅한다.

image

StatVar

UI - TextMeshPro를 선택한다.

다음 그림과 같이 세팅한다.

image

Option

image

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

OptionPage

UI - Image를 선택한다.

다음 그림과 같이 세팅한다.

image

SoundControl

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

Label

UI - TextMeshPro를 선택한다.

다음 그림과 같이 세팅한다.

image

SoundControlBar

UI - Slider를 선택한다.

다음 그림과 같이 세팅한다.

image

MusicControl

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

Label

UI - TextMeshPro를 선택한다.

다음 그림과 같이 세팅한다.

image

MusicControlBar

UI - Slider를 선택한다.

다음 그림과 같이 세팅한다.

image

VFXShow

UI - Toggle을 선택한다.

다음 그림과 같이 세팅한다.

image

Label

UI - TextMeshPro를 선택한다.

다음 그림과 같이 세팅한다.

image

Background

다음 그림과 같이 세팅한다.

image

DamageShow

UI - Toggle을 선택한다.

다음 그림과 같이 세팅한다.

image

Label

UI - TextMeshPro를 선택한다.

image

다음 그림과 같이 세팅한다.

Background

다음 그림과 같이 세팅한다.

image

Button

image image image

Create Empty Children을 선택한다.

다음 그림과 같이 세팅한다.

image

OptionButton

UI - Button-TextMeshPro을 선택한다.

다음 그림과 같이 세팅한다.

image image

Text

image

BackButton

UI - Button-TextMeshPro을 선택한다.

다음 그림과 같이 세팅한다.

image image

Text

image

QuitButton

UI - Button-TextMeshPro을 선택한다.

다음 그림과 같이 세팅한다.

image image

Text

image

ScriptCode

OptionUIManager.cs

using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class OptionUIManager : MonoBehaviour
{
    [SerializeField] MiniLevels[] mWeaponLevelsUI;
    [SerializeField] Image[] mOwnWeaponImages;
    [SerializeField] MiniLevels[] mAccessoryLevelsUI;
    [SerializeField] Image[] mOwnAccessoryImages;

    [SerializeField] GameObject mItemUI;
    [SerializeField] GameObject mStatUI;
    [SerializeField] GameObject mOptionPageUI;
    [SerializeField] GameObject mOptionButtonUI;
    [SerializeField] GameObject mBackButtonUI;
    [SerializeField] GameObject mQuitButtonUI;
    [SerializeField] GameObject mPlayer;

    [SerializeField] TextMeshProUGUI mStatVarText;

    [SerializeField] Sprite[] mWeaponImages;
    [SerializeField] Sprite[] mAccessoryImages;
    [SerializeField] Sprite[] mEtcImages;
    [SerializeField] Sprite[] mMiniLevelImages;

    private bool mbPauseGame = false;

    private void Awake()
    {
        mItemUI.SetActive(false);
        mStatUI.SetActive(false);
        mOptionPageUI.SetActive(false);
        mOptionButtonUI.SetActive(false);
        mBackButtonUI.SetActive(false);
        mQuitButtonUI.SetActive(false);
        UnSetItemUI();
    }
    private void Start()
    {
        // 저장된 볼륨 값 로드
        SoundManager soundManager = SoundManager.instance;

        // defaultPanel의 자식 요소들을 가져와서 슬라이더를 초기화
        Slider[] sliders = mOptionPageUI.GetComponentsInChildren<Slider>();
        foreach (Slider slider in sliders)
        {
            switch (slider.name)
            {
                case "BgmSlider":
                    slider.value = soundManager.BgmVolume;
                    slider.onValueChanged.AddListener(OnBgmVolumeChanged);
                    break;
                case "SoundEffectSlider":
                    slider.value = soundManager.SoundEffectVolume;
                    slider.onValueChanged.AddListener(OnSoundEffectVolumeChanged);
                    break;
            }
        }
    }
    private void Update()
    {
        if(Input.GetKeyDown(KeyCode.Escape))
        {
            if(!mbPauseGame)
            {
                var weapons = GameManager.instance.EquipManageSys.Weapons;
                var accessories = GameManager.instance.EquipManageSys.Accessories;
                var characterStats =  GameManager.instance.CharacterStats;
                Time.timeScale = 0f;
                mItemUI.SetActive(true);
                mStatUI.SetActive(true);
                mOptionButtonUI.SetActive(true);
                mBackButtonUI.SetActive(true);
                SetItemUI(weapons, accessories);
                SetStatUI(characterStats);
                mPlayer.GetComponent<PlayerMovement>().enabled = false;
                mbPauseGame = true;
            }
            else
            {
                mItemUI.SetActive(false);
                mStatUI.SetActive(false);
                mOptionPageUI.SetActive(false);
                mOptionButtonUI.SetActive(false);
                mBackButtonUI.SetActive(false);
                mQuitButtonUI.SetActive(false);
                Time.timeScale = 1f;
                mPlayer.GetComponent<PlayerMovement>().enabled = true;
                mbPauseGame = false;
            }
            
        }
    }
    public void Resume()
    {
        if(EventSystem.current.IsPointerOverGameObject())
        {  
            mItemUI.SetActive(false);
            mStatUI.SetActive(false);
            mOptionPageUI.SetActive(false);
            mOptionButtonUI.SetActive(false);
            mBackButtonUI.SetActive(false);
            mQuitButtonUI.SetActive(false);
            Time.timeScale = 1f;
            mPlayer.GetComponent<PlayerMovement>().enabled = true;
        }
    }
    public void UnSetItemUI()
    {
        foreach (var image in mOwnWeaponImages)
        {
            image.enabled = false;
        }
        foreach (var weaponslevel in mWeaponLevelsUI)
        {
            foreach (var weaponMiniLevel in weaponslevel.MiniLevel)
            {
                weaponMiniLevel.enabled = false;
            }
        }
        foreach (var image in mOwnAccessoryImages)
        {
            image.enabled = false;
        }
        foreach (var accessorieslevel in mAccessoryLevelsUI)
        {
            foreach (var accessoryMiniLevel in accessorieslevel.MiniLevel)
            {
                accessoryMiniLevel.enabled = false;
            }
        }
    }
    public void SetStatUI(float[] characterStats)
    {
        mStatVarText.text =
            (GameManager.instance.CharacterData.MaxHealth * characterStats[(int)Enums.EStat.MaxHealth]).ToString() + "\n" +
            ((int)(characterStats[(int)Enums.EStat.Recovery] * 10) == 0 ? "-" : "+" +(characterStats[(int)Enums.EStat.Recovery]).ToString()) + "\n" +
            ((int)(characterStats[(int)Enums.EStat.Armor]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Armor])).ToString()) + "\n" +
            ((int)((characterStats[(int)Enums.EStat.MoveSpeed] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.MoveSpeed] - 1) * 100 )).ToString() + "%") + "\n\n" +
            ((int)((characterStats[(int)Enums.EStat.Might] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Might] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)((characterStats[(int)Enums.EStat.ProjectileSpeed] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.ProjectileSpeed] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)((characterStats[(int)Enums.EStat.Duration] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Duration] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)((characterStats[(int)Enums.EStat.Area] - 1) * 100 ) == 0 ? "-" : ((int)((characterStats[(int)Enums.EStat.Area] - 1)) == 0 ? "+" + ((int)((characterStats[(int)Enums.EStat.Area] - 1) * 100)).ToString() + "%" : "+" + ((int)(characterStats[(int)Enums.EStat.Area] * 100)).ToString() + "%")) + "\n\n" + // 초기 공격 범위가 1이 아닌 4일 때 즉 400% 일 때 300%로 표기되는 것을 막기 위해서 if문 하나 더 사용
            ((int)((characterStats[(int)Enums.EStat.Cooldown] - 1) * 100 ) == 0 ? "-" : ((int)((characterStats[(int)Enums.EStat.Cooldown] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)(characterStats[(int)Enums.EStat.Amount]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Amount])).ToString()) + "\n" +
            ((int)(characterStats[(int)Enums.EStat.Revival]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Revival])).ToString()) + "\n" +
            ((int)((characterStats[(int)Enums.EStat.Magnet] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Magnet] - 1) * 100 )).ToString() + "%") + "\n\n" +
            ((int)((characterStats[(int)Enums.EStat.Luck] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Luck] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)((characterStats[(int)Enums.EStat.Growth] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Growth] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)((characterStats[(int)Enums.EStat.Greed] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Greed] - 1) * 100 )).ToString() + "%") + "\n" +
            ((int)((characterStats[(int)Enums.EStat.Curse] - 1) * 100 ) == 0 ? "-" : "+" + ((int)((characterStats[(int)Enums.EStat.Curse] - 1) * 100 )).ToString() + "%") + "\n\n" +
            ((int)(characterStats[(int)Enums.EStat.Reroll]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Reroll])).ToString()) + "\n" +
            ((int)(characterStats[(int)Enums.EStat.Skip]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Skip])).ToString()) + "\n" +
            ((int)(characterStats[(int)Enums.EStat.Banish]) == 0 ? "-" : "+" + ((int)(characterStats[(int)Enums.EStat.Banish])).ToString());
    }
    public void SetItemUI(List<Weapon> weapons, List<Accessory> accessories)
    {
        SetWeaponUI(weapons);
        SetAccessoryUI(accessories);
    }
    private void OnBgmVolumeChanged(float value)
    {
        SoundManager soundManager = SoundManager.instance;
        soundManager.BgmVolume = value;
        Debug.Log(soundManager.BgmVolume);
    }
    private void OnSoundEffectVolumeChanged(float value)
    {
        SoundManager soundManager = SoundManager.instance;
        soundManager.SoundEffectVolume = value;
        Debug.Log(soundManager.SoundEffectVolume);
    }
    private void SetWeaponUI(List<Weapon> weapons)
    {
        for (int i = 0; i < weapons.Count; i++)
        {
            mOwnWeaponImages[i].sprite = mWeaponImages[weapons[i].WeaponIndex];
            mOwnWeaponImages[i].enabled = true;

            int j = 0;
            for (; j < weapons[i].WeaponLevel; j++)
            {
                mWeaponLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[1];
                mWeaponLevelsUI[i].MiniLevel[j].enabled = true;
            }
            for (; j < weapons[i].WeaponMaxLevel; j++)
            {
                mWeaponLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[0];
                mWeaponLevelsUI[i].MiniLevel[j].enabled = true;
            }
        }
    }
    private void SetAccessoryUI(List<Accessory> accessories)
    {
        for (int i = 0; i < accessories.Count; i++)
        {
            mOwnAccessoryImages[i].sprite = mAccessoryImages[accessories[i].AccessoryIndex];
            mOwnAccessoryImages[i].enabled = true;

            int j = 0;
            for (; j < accessories[i].AccessoryLevel; j++)
            {
                mAccessoryLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[1];
                mAccessoryLevelsUI[i].MiniLevel[j].enabled = true;
            }
            for (; j < accessories[i].AccessoryMaxLevel; j++)
            {
                mAccessoryLevelsUI[i].MiniLevel[j].sprite = mMiniLevelImages[0];
                mAccessoryLevelsUI[i].MiniLevel[j].enabled = true;
            }
        }
    }
}
Clone this wiki locally