2021년 4학년 1학기 기업연계프로젝트2
컴퓨터소프트웨어공학과 <원광투어팀>
팀장 : 송유진
팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using System.Collections.Generic;using Unity.FPS.Game;using Unity.FPS.Gameplay;using UnityEngine;
namespace Unity.FPS.UI{ public class WeaponHUDManager : MonoBehaviour { [Tooltip("UI panel containing the layoutGroup for displaying weapon ammos")] public RectTransform AmmosPanel;
[Tooltip("Prefab for displaying weapon ammo")] public GameObject AmmoCounterPrefab;
PlayerWeaponsManager m_PlayerWeaponsManager; List<AmmoCounter> m_AmmoCounters = new List<AmmoCounter>();
void Start() { m_PlayerWeaponsManager = FindObjectOfType<PlayerWeaponsManager>(); DebugUtility.HandleErrorIfNullFindObject<PlayerWeaponsManager, WeaponHUDManager>(m_PlayerWeaponsManager, this);
WeaponController activeWeapon = m_PlayerWeaponsManager.GetActiveWeapon(); if (activeWeapon) { AddWeapon(activeWeapon, m_PlayerWeaponsManager.ActiveWeaponIndex); ChangeWeapon(activeWeapon); }
m_PlayerWeaponsManager.OnAddedWeapon += AddWeapon; m_PlayerWeaponsManager.OnRemovedWeapon += RemoveWeapon; m_PlayerWeaponsManager.OnSwitchedToWeapon += ChangeWeapon; }
void AddWeapon(WeaponController newWeapon, int weaponIndex) { GameObject ammoCounterInstance = Instantiate(AmmoCounterPrefab, AmmosPanel); AmmoCounter newAmmoCounter = ammoCounterInstance.GetComponent<AmmoCounter>(); DebugUtility.HandleErrorIfNullGetComponent<AmmoCounter, WeaponHUDManager>(newAmmoCounter, this, ammoCounterInstance.gameObject);
newAmmoCounter.Initialize(newWeapon, weaponIndex);
m_AmmoCounters.Add(newAmmoCounter); }
void RemoveWeapon(WeaponController newWeapon, int weaponIndex) { int foundCounterIndex = -1; for (int i = 0; i < m_AmmoCounters.Count; i++) { if (m_AmmoCounters[i].WeaponCounterIndex == weaponIndex) { foundCounterIndex = i; Destroy(m_AmmoCounters[i].gameObject); } }
if (foundCounterIndex >= 0) { m_AmmoCounters.RemoveAt(foundCounterIndex); } }
void ChangeWeapon(WeaponController weapon) { UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(AmmosPanel); } }}
|