[HOTFIX] UIManager Refactor

This commit is contained in:
IDMhan 2023-12-26 11:10:48 +09:00
parent 59244e8050
commit 962ccfbfe7
5 changed files with 104 additions and 60 deletions

View File

@ -12310,6 +12310,7 @@ GameObject:
- component: {fileID: 957212529}
- component: {fileID: 957212528}
- component: {fileID: 957212527}
- component: {fileID: 957212531}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
@ -12400,6 +12401,19 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &957212531
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 957212526}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 06c19c0e062e84c169aca3af92060883, type: 3}
m_Name:
m_EditorClassIdentifier:
_persistent: 0
--- !u!1 &957702341
GameObject:
m_ObjectHideFlags: 0
@ -14151,7 +14165,7 @@ GameObject:
- component: {fileID: 1072594281}
- component: {fileID: 1072594284}
m_Layer: 5
m_Name: UIPopup
m_Name: BuildListPopup
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

View File

@ -69,7 +69,16 @@ namespace BlueWaterProject
private void OnBuildMode(InputValue value)
{
var buildListPopup = UiManager.Inst.TycoonUi.BuildListPopup;
if (buildListPopup.gameObject.activeSelf)
{
buildListPopup.Hide();
}
else
{
buildListPopup.Show();
}
}
private void OnCancel(InputValue value)
@ -140,62 +149,61 @@ namespace BlueWaterProject
public void StartInteraction(Transform target)
{
interactionTarget = target;
interactionTarget.GetComponent<InShipNpc>()?.ChangeStateToInteraction();
var targetPosition = interactionTarget.position;
var playerPosition = transform.position;
var directionToTarget = (targetPosition - playerPosition).normalized;
// 캐릭터가 NPC의 왼쪽 또는 오른쪽에 있는지 확인
var crossProduct = Vector3.Cross(directionToTarget, transform.forward).y;
Vector3 desiredPosition;
float desiredScaleX; // 캐릭터의 방
if (crossProduct > 0) // 캐릭터가 NPC의 왼쪽에 있는 경우
{
desiredPosition = targetPosition + interactionTarget.right * 2f;
desiredScaleX = 1f; // 오른쪽을 바라봄
}
else // 캐릭터가 NPC의 오른쪽에 있는 경우
{
desiredPosition = targetPosition + interactionTarget.right * -2f;
desiredScaleX = -1f; // 왼쪽을 바라봄
}
// 장애물 감지
if (Physics.Raycast(playerPosition, (desiredPosition - playerPosition).normalized, Vector3.Distance(playerPosition, desiredPosition), LayerMask.GetMask("Obstacle")))
{
// 장애물이 감지되면, 반대쪽으로 이동
desiredPosition = crossProduct > 0 ? targetPosition + interactionTarget.right * -2f : targetPosition + interactionTarget.right * 2f;
desiredScaleX = -desiredScaleX; // 방향을 반전
}
// 캐릭터를 원하는 위치와 방향으로 부드럽게 이동 및 회전
StartCoroutine(MoveCharacterToPosition(desiredPosition, desiredScaleX));
UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
// interactionTarget = target;
// interactionTarget.GetComponent<InShipNpc>()?.ChangeStateToInteraction();
//
// var targetPosition = interactionTarget.position;
// var playerPosition = transform.position;
//
// var directionToTarget = (targetPosition - playerPosition).normalized;
//
// // 캐릭터가 NPC의 왼쪽 또는 오른쪽에 있는지 확인
// var crossProduct = Vector3.Cross(directionToTarget, transform.forward).y;
//
// Vector3 desiredPosition;
// float desiredScaleX; // 캐릭터의 방
//
// if (crossProduct > 0) // 캐릭터가 NPC의 왼쪽에 있는 경우
// {
// desiredPosition = targetPosition + interactionTarget.right * 2f;
// desiredScaleX = 1f; // 오른쪽을 바라봄
// }
// else // 캐릭터가 NPC의 오른쪽에 있는 경우
// {
// desiredPosition = targetPosition + interactionTarget.right * -2f;
// desiredScaleX = -1f; // 왼쪽을 바라봄
// }
//
// // 장애물 감지
// if (Physics.Raycast(playerPosition, (desiredPosition - playerPosition).normalized, Vector3.Distance(playerPosition, desiredPosition), LayerMask.GetMask("Obstacle")))
// {
// // 장애물이 감지되면, 반대쪽으로 이동
// desiredPosition = crossProduct > 0 ? targetPosition + interactionTarget.right * -2f : targetPosition + interactionTarget.right * 2f;
// desiredScaleX = -desiredScaleX; // 방향을 반전
// }
//
// // 캐릭터를 원하는 위치와 방향으로 부드럽게 이동 및 회전
// StartCoroutine(MoveCharacterToPosition(desiredPosition, desiredScaleX));
// UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
}
public void StartConversation()
{
if (interactionTarget != null)
{
interactionTarget.GetComponent<DialogueSystemTrigger>().OnConversationStart(interactionTarget);
UiManager.Inst.InShipInteraction.gameObject.SetActive(false);
}
// if (interactionTarget != null)
// {
// interactionTarget.GetComponent<DialogueSystemTrigger>().OnConversationStart(interactionTarget);
// UiManager.Inst.InShipInteraction.gameObject.SetActive(false);
// }
}
public void EndInteraction()
{
interactionTarget.GetComponent<InShipNpc>()?.RestoreState();
//interactionTarget.GetComponent<InShipNpc>()?.RestoreState();
}
public void EndConversation()
{
UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
//UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
}
}
}

View File

@ -0,0 +1,22 @@
using System;
using System.Collections;
using System.Collections.Generic;
using BlueWaterProject;
using Doozy.Runtime.UIManager.Containers;
using UnityEngine;
public class TycoonUi : MonoBehaviour
{
public UIPopup BuildListPopup { get; set; }
private void Init()
{
UiManager.Inst.TycoonUi = this;
BuildListPopup = transform.Find("BuildListPopup").GetComponent<UIPopup>();
}
private void Awake()
{
Init();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 54648b16fa3ac47d9bc7543e261ac76e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,3 +1,4 @@
using Doozy.Runtime.UIManager.Containers;
using Sirenix.OdinInspector;
using UnityEngine;
@ -9,24 +10,12 @@ namespace BlueWaterProject
{
[Title("Mouse")]
private Texture2D cursorTexture;
[Title("InteractionUI")]
private Transform defaultInteraction;
public Transform InShipInteraction { get; set; }
public OceanUi OceanUi { get; set; }
private void Init()
{
defaultInteraction = transform.Find("DefaultInteraction");
InShipInteraction = transform.Find("InShipPlayerInteractionUI");
}
protected override void OnAwake()
{
Init();
}
[Title("Tycoon")]
public TycoonUi TycoonUi { get; set; }
private void Start()
{