|
@@ -13,7 +13,7 @@ using UnityEngine.UIElements;
|
|
|
public class MenuController : MonoBehaviour
|
|
|
{
|
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
|
- private VisualElement mainMenu, dogIcon, dogList;
|
|
|
+ private VisualElement mainMenu, dogIcon, dogList, quit;
|
|
|
private List<VisualElement> subMenu = new();
|
|
|
//private bool isSubMenuShow = false;
|
|
|
private GameObject uiPlaceholder; // Manu会控制其他子菜单显示和隐藏,因此所有子菜单都必须挂载在UI Placeholder下
|
|
@@ -24,6 +24,8 @@ public class MenuController : MonoBehaviour
|
|
|
private static bool isMenuShowed = false; // 右侧子菜单是否展开
|
|
|
private static DateTime menuShowTime; // 菜单展开时间
|
|
|
|
|
|
+ private float longPressTime = 1.0f; // 长按时间阈值
|
|
|
+ private float dogNamePressStartTime;
|
|
|
void OnEnable()
|
|
|
{
|
|
|
// 找到需要控制的其他子菜单
|
|
@@ -67,16 +69,18 @@ public class MenuController : MonoBehaviour
|
|
|
//var root = GetComponent<UIDocument>().rootVisualElement;
|
|
|
dogIcon = root.Q<VisualElement>("dogMenu").Q<VisualElement>("dogIcon");
|
|
|
dogList = root.Q<VisualElement>("dogMenu").Q<VisualElement>("dogList");
|
|
|
+ quit = root.Q<VisualElement>("quit");
|
|
|
+ quit.RegisterCallback<ClickEvent>(e => QuitClick()); // 退出游戏按钮
|
|
|
|
|
|
DogNameInit(); // 初始化狗的名字,这里当菜单重新激活后再次加载
|
|
|
|
|
|
dogIcon.RegisterCallback<ClickEvent>(e => DogIconClick(e));
|
|
|
|
|
|
- // 根据配置隐藏一些菜单
|
|
|
- if (UserProperty.dogs.Count == 1)
|
|
|
- {
|
|
|
- dogIcon.visible = false;
|
|
|
- }
|
|
|
+ // 如果狗的数量小于2只,隐藏狗的图标
|
|
|
+ //if (UserProperty.dogs.Count == 1)
|
|
|
+ //{
|
|
|
+ // dogIcon.visible = false;
|
|
|
+ //}
|
|
|
if (UserProperty.isRegUser == false)
|
|
|
{
|
|
|
// home.style.display = DisplayStyle.None;
|
|
@@ -137,7 +141,7 @@ public class MenuController : MonoBehaviour
|
|
|
// curAngle 初始角度,angleDelta 2个子菜单之间角度,distance 弹出距离,showTimer 显示时间
|
|
|
float curAngle = 100f;
|
|
|
// float angleDelta = 40f;
|
|
|
- float angleDelta = 200/subMenu.Count;
|
|
|
+ float angleDelta = 200 / subMenu.Count;
|
|
|
float distance = 70f;
|
|
|
//float showTimer = 3.0f;
|
|
|
foreach (var menu in subMenu)
|
|
@@ -218,6 +222,16 @@ public class MenuController : MonoBehaviour
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ private void QuitClick()
|
|
|
+ {
|
|
|
+ string msg = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "game_message", "quit_game", EnviromentSetting.languageCode });
|
|
|
+ MessageBoxController.YorN_Message(msg, () => Application.Quit());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ #region 左侧菜单控制
|
|
|
void DogIconClick(ClickEvent e)
|
|
|
{
|
|
|
Debug.Log("DogIconClick");
|
|
@@ -232,32 +246,69 @@ public class MenuController : MonoBehaviour
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- #region 左侧菜单控制
|
|
|
// 点击狗的名字时候处理
|
|
|
- void DogNameClick(ClickEvent e, int index)
|
|
|
+ void DogNamePointDown(PointerDownEvent e, int index)
|
|
|
+ {
|
|
|
+ dogNamePressStartTime = Time.unscaledTime; // 记录按下时间
|
|
|
+ }
|
|
|
+ void DogNamePressUP(PointerUpEvent e, int index)
|
|
|
{
|
|
|
GameData.focusDog = index;
|
|
|
- if (GameData.homeCamFocusDog == index)
|
|
|
+ //Debug.Log("e delta time=" + e.);
|
|
|
+ float deltaTime = Time.unscaledTime - dogNamePressStartTime;
|
|
|
+ Debug.Log("delta time is:" + deltaTime.ToString());
|
|
|
+ if (deltaTime < longPressTime)
|
|
|
{
|
|
|
- // 重复点击狗的名字,恢复广角,所有狗的名字显示一样大小
|
|
|
- HomeController.dogCam.Priority = 1;
|
|
|
- HomeController.playerCam.Priority = 10;
|
|
|
- GameData.homeCamFocusDog = 100; // 100表示不聚焦
|
|
|
- //dogNames[index].transform.scale = new Vector2(1f, 1f);
|
|
|
-
|
|
|
+ // 短按效果,切换狗的名字
|
|
|
+ if (GameData.homeCamFocusDog == index)
|
|
|
+ {
|
|
|
+ // 重复点击狗的名字,恢复广角,所有狗的名字显示一样大小
|
|
|
+ HomeController.dogCam.Priority = 1;
|
|
|
+ HomeController.playerCam.Priority = 10;
|
|
|
+ GameData.homeCamFocusDog = 100; // 100表示不聚焦
|
|
|
+ //dogNames[index].transform.scale = new Vector2(1f, 1f);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ GameData.homeCamFocusDog = index;
|
|
|
+ //dogNames[index].transform.scale = new Vector2(1.2f, 1.2f);
|
|
|
+ HomeController.dogCam.m_LookAt = HomeController.dogsInScene[index].gameObject.transform;
|
|
|
+ HomeController.dogCam.Priority = 10;
|
|
|
+ HomeController.playerCam.Priority = 1;
|
|
|
+ HomeController.lastCameraChange = DateTime.Now;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- GameData.homeCamFocusDog = index;
|
|
|
- //dogNames[index].transform.scale = new Vector2(1.2f, 1.2f);
|
|
|
- HomeController.dogCam.m_LookAt = HomeController.dogsInScene[index].gameObject.transform;
|
|
|
- HomeController.dogCam.Priority = 10;
|
|
|
- HomeController.playerCam.Priority = 1;
|
|
|
- HomeController.lastCameraChange = DateTime.Now;
|
|
|
+ // 长按效果,进入互动模式
|
|
|
+ HomeController.Instance.SetSceneMode(SceneMode.INACTIVE);
|
|
|
+ HomeController.Instance.VoiceButtonOnlySwitch(true);
|
|
|
+ string focusDogId = UserProperty.GetDogIdByIndex(index);
|
|
|
+ foreach (var dog in HomeController.dogsInScene)
|
|
|
+ {
|
|
|
+ if (dog.dogProperty.d_id == focusDogId)
|
|
|
+ {
|
|
|
+ // if (GameTool.Random100Check(dog.dogProperty.voiceCall))
|
|
|
+ // {
|
|
|
+ // dog.SetupInteract();
|
|
|
+ HomeController.Instance.SetInteractDog(dog.gameObject);
|
|
|
+ // focusdog 开启互动模式
|
|
|
+ // HomeController.dogsInScene[GameData.focusDog].dogState = DogState.INTERACT;
|
|
|
+ HomeController.dogsInScene[GameData.focusDog].SetupInteract();
|
|
|
+ // 其他狗进入隐藏模式
|
|
|
+ foreach (var otherDog in HomeController.dogsInScene)
|
|
|
+ {
|
|
|
+ if (otherDog.dogProperty.d_id != focusDogId)
|
|
|
+ {
|
|
|
+ otherDog.gameObject.SetActive(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ HomeSoundEffectController.Instance.PlaySoundEffect(5);
|
|
|
}
|
|
|
-
|
|
|
- if (dogList.visible == true) { dogList.visible = false; }
|
|
|
+
|
|
|
+ if (dogList.visible == true) { dogList.visible = false; }
|
|
|
}
|
|
|
|
|
|
// 初始化狗的名字
|
|
@@ -275,7 +326,8 @@ public class MenuController : MonoBehaviour
|
|
|
int index = i;
|
|
|
dogNames[i].style.display = DisplayStyle.Flex;
|
|
|
dogNames[i].text = UserProperty.dogs[i].dog_name;
|
|
|
- dogNames[i].RegisterCallback<ClickEvent>(e => DogNameClick(e, index));
|
|
|
+ dogNames[i].RegisterCallback<PointerUpEvent>(e => DogNamePressUP(e, index));
|
|
|
+ dogNames[i].RegisterCallback<PointerDownEvent>(e => DogNamePointDown(e, index));
|
|
|
}
|
|
|
}
|
|
|
|