Compare commits

...

6 Commits
master ... U3D

Author SHA1 Message Date
xukanghao adca10485c szz1210 17.44 代码提交 2025-12-10 17:44:40 +08:00
xukanghao 8ae8638d91 Merge branch 'U3D' of http://172.16.1.12/huangjiayu/HKMBFZ into U3D
# Conflicts:
#	Assets/UI/181/Photo/主界面/主界面.png
#	Assets/UI/181/发射阵地/基准赋予 – 1.png
2025-12-10 16:34:42 +08:00
lujiajian ad1fa34c99 11 2025-12-10 14:41:38 +08:00
lujiajian d3e18f44bf 修改图片问题 2025-12-10 14:40:50 +08:00
xukanghao f00d2a2687 1210 10.36 szz提交 2025-12-10 10:36:17 +08:00
lujiajian 5f22dabbab 修改图片 2025-12-09 17:49:10 +08:00
123 changed files with 38594 additions and 6350 deletions

File diff suppressed because one or more lines are too long

BIN
Assets/Plugins/I18N.CJK.dll Normal file

Binary file not shown.

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: efc75ea180991a446be0c54913d35686
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: 4f29670eede5d5844945332c886c2e4f
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: aa9adf19f5c71c540bda55a06b314cef
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: ea6b91973769c844186ac086d6ae9ce6
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: ae77c3a479d419d4d908d894daa2115e
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Plugins/I18N.dll Normal file

Binary file not shown.

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: 44618147ce030574c813fc37dfd955e2
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7e4a233aff51b734eb84e04bd2063169
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -111,9 +111,10 @@ public class Control3DModelBt : MonoBehaviour
{
ModelLight.material.EnableKeyword("_EMISSION");
}
isInit = true;
yield return new WaitForSeconds(0.7f);
transform.GetComponent<Collider>().enabled = true;
isInit = true;
}
else
@ -124,9 +125,10 @@ public class Control3DModelBt : MonoBehaviour
{
ModelLight.material.DisableKeyword("_EMISSION");
}
isInit = false;
yield return new WaitForSeconds(0.7f);
transform.GetComponent<Collider>().enabled = true;
isInit = false;
}
break;
case BtType.°´Å¥:

View File

@ -0,0 +1,35 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LightController : MonoBehaviour
{
public Control3DModelBt control;
Renderer renderer;
public Control3DModelBt myBtn;
private void Start()
{
renderer = GetComponent<Renderer>();
renderer.material.DisableKeyword("_EMISSION");
}
// Update is called once per frame
void Update()
{
if (control.isInit)
{
if (!myBtn.isInit)
{
if (!renderer.material.IsKeywordEnabled("_EMISSION"))
renderer.material.EnableKeyword("_EMISSION");
}
else
{
if (renderer.material.IsKeywordEnabled("_EMISSION"))
renderer.material.DisableKeyword("_EMISSION");
}
}
else
if (renderer.material.IsKeywordEnabled("_EMISSION"))
renderer.material.DisableKeyword("_EMISSION");
}
}

View File

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

View File

@ -5,6 +5,10 @@ using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;
using TMPro;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System;
using System.Reflection;
public class ReadExlAndSetValue : MonoBehaviour
{
@ -15,11 +19,11 @@ public class ReadExlAndSetValue : MonoBehaviour
public string keyName;
public void Awake()
{
//System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
// 手动注册编码提供程序
FillFromExcel();
}

View File

@ -52,7 +52,8 @@ public class RotationController : MonoBehaviour
// 每次激活都强制重置
ResetState();
animationObj.SetActive(false);
Debug.Log("ÖØÖÃ");
// 重新播放动画
PlayAnimation();
}

View File

@ -61,7 +61,7 @@ public class MyTest : MonoBehaviour
backScale.onClick.AddListener(() => {
camera_122.transform.localPosition = cameraLocalPos;
canvas_122.GetComponent<CanvasScaler>().scaleFactor = 1.55f;
if (upPage != null)
{
@ -73,7 +73,7 @@ public class MyTest : MonoBehaviour
}
if (downPage != null)
{
canvas_122.GetComponent<CanvasScaler>().scaleFactor = 1.55f;
canvas_122.transform.GetChild(0).GetComponent<RectTransform>().anchoredPosition = obj1pos;
downPage.SetActive(true);
}
@ -86,11 +86,12 @@ public class MyTest : MonoBehaviour
downScale.onClick.AddListener(() => {
camera_122.transform.localPosition = new Vector3(-0.001f, -0.245f, 0.608f);
//camera_122.transform.localPosition = new Vector3(-0.001f, -0.245f, 0.608f);
camera_122.transform.localPosition = new Vector3(-0.005f, -0.242f, 0.59f);
if (downPage != null)
{
canvas_122.GetComponent<CanvasScaler>().scaleFactor = 2.9f;
canvas_122.transform.GetChild(0).GetComponent<RectTransform>().anchoredPosition = new Vector3(113, 270f, 0);
canvas_122.transform.GetChild(0).GetComponent<RectTransform>().anchoredPosition = new Vector3(111, 270f, 0);
downPage.SetActive(true);
@ -104,7 +105,7 @@ public class MyTest : MonoBehaviour
upScale.onClick.AddListener(() => {
camera_122.transform.localPosition = new Vector3(-0.001f, 0.103f, 0.599f);
camera_122.transform.localPosition = new Vector3(-0.0059f, 0.103f, 0.59f);
if (upPage != null )
{
@ -112,7 +113,7 @@ public class MyTest : MonoBehaviour
upPage.SetActive(true);
upPage.GetComponent<RectTransform>().localScale = Vector3.one;
upPage.GetComponent<RectTransform>().anchoredPosition = new Vector3(-33, 267f, 0);
upPage.GetComponent<RectTransform>().anchoredPosition = new Vector3(-45, 267f, 0);
}
if(downPage!=null)

View File

@ -10,18 +10,69 @@ public class Shoot122Manager : MonoBehaviour
public GameObject rawImage_122;
public GameObject penguan;
public List<string> chooseShoot=new List<string>();
public Dictionary<string,int> choosedValue=new Dictionary<string,int>();
public Control3DModelBt ±£ÏÕ;
public bool isShootReady;
public Control3DModelBt autoBtn1;
public Control3DModelBt autoBtn2;
public Control3DModelBt usedOpen;
private void Awake()
{
Instance = this;
isShoot = false;
isShootReady = false;
}
public bool isShoot;
// Start is called before the first frame update
private void Update()
{
if (autoBtn1.Get3DBtnState() && autoBtn2.Get3DBtnState() && usedOpen.Get3DBtnState())
{
isShootReady = true;
}
else {
isShootReady = false;
}
}
public void AddOrUpdate(string key, int value)
{
if (choosedValue.ContainsKey(key))
{
// 键已存在,更新值
choosedValue[key] = value;
}
else
{
// 键不存在,添加新元素
choosedValue.Add(key, value);
}
if (GameObject.FindObjectOfType<PaoZhangMainPage>() != null)
{
FindObjectOfType<PaoZhangMainPage>().SetOneState(int.Parse(key), value);
}
}
public bool RemoveByKey(string key)
{
if (choosedValue.ContainsKey(key))
{
choosedValue.Remove(key);
return true; // 删除成功
}
return false; // key不存在删除失败
}
public void Jifa()
{
if (isShoot|| !±£ÏÕ.isInit)
@ -30,6 +81,10 @@ public class Shoot122Manager : MonoBehaviour
isShoot =true;
animation_122.Play();
penguan.SetActive(true);
for (int i = 0; i < chooseShoot.Count; i++)
{
AddOrUpdate(chooseShoot[i].ToString(), 3);
}
}

View File

@ -12,6 +12,8 @@ public class Manager122Base : MonoBehaviour
public Control3DModelBt ; //引信按钮
public GameObject defalutPage; //默认的主菜单
private void Awake()
{
if (instance == null)

View File

@ -37,7 +37,7 @@ public class MenuPage : UIPageBtnEventBase
{
base.OnF3Click();
//ShowSelectState(2);
manager122.Show122DwonMsg("插连接器");
manager122.Show122DwonMsg("插连接器成功");
ShowPage(2);
}
@ -53,7 +53,7 @@ public class MenuPage : UIPageBtnEventBase
{
base.OnF5Click();
//ShowSelectState(4);
manager122.Show122DwonMsg("断连接器");
manager122.Show122DwonMsg("断连接器成功");
ShowPage(4);
}

View File

@ -10,6 +10,14 @@ public class SheJiZhunBeiPage : UIPageBtnEventBase
public GameObject page;
public Transform dataParent;
Manager122Base manager122;
private void Awake()
{
manager122 = Manager122Base.instance;
}
public override void OnF1Click()
{
@ -49,6 +57,7 @@ public class SheJiZhunBeiPage : UIPageBtnEventBase
// 气象信息page.SetActive (false);
// return;
//}
manager122.defalutPage.SetActive(true);
FindAnyObjectByType<MenuPage>(FindObjectsInactive.Include).gameObject.SetActive(true);
Destroy(gameObject);
}

View File

@ -4,19 +4,24 @@ using UnityEngine;
public class CaoMiaoDiaoPaoPage : UIPageBtnEventBase
{
public CustomTMPDropdown tMPDropdown;
public CustomTMPDropdown ;
//确定是用炮状态(两个自动状态+用炮状态+引信开)-点击确定-调炮
private void OnEnable()
{
tMPDropdown.value = 0;
}
public override void OnEnterBtnClick()
{
base.OnEnterBtnClick();
//在这个界面按下enter就会开始调炮
AnimationModel.instance.Show122Tween();
if ( Shoot122Manager.Instance.isShootReady) //点击确认则开始调炮
{
AnimationModel.instance.Show122Tween();
}
}
@ -24,7 +29,11 @@ public class CaoMiaoDiaoPaoPage : UIPageBtnEventBase
{
base.OnF6Click();
//取消调炮
AnimationModel.instance.PauseTween();
if (Shoot122Manager.Instance.isShootReady) //点击确认则开始调炮
{
AnimationModel.instance.PauseTween();
}
}
public List<GameObject> biaochiResult=new List<GameObject>();

View File

@ -53,23 +53,46 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
//射击实施打开后,会接收药温等信息,按确认后,开始解算基本信息
private void Update()
public override void Update()
{
base.Update();
if (isChooseStart)
{
if (Input.GetKeyDown(KeyCode.Return))
{
if (.text == "")
return;
List<int> results = ParseNumbers(.text);
for (int i = 0; i < results.Count; i++)
{
if (!chooseList.Contains(results[i].ToString()))
{
chooseList.Add(results[i].ToString());
Shoot122Manager.Instance.chooseShoot.Add(results[i].ToString());
FindPointAndShowState(results[i].ToString(), 1);
if (.text.Contains(".")) //有点就是单个选
{
List<int> results = ParseNumbers(.text);
for (int i = 0; i < results.Count; i++)
{
if (!chooseList.Contains(results[i].ToString()))
{
chooseList.Add(results[i].ToString());
Shoot122Manager.Instance.chooseShoot.Add(results[i].ToString());
Shoot122Manager.Instance.AddOrUpdate(results[i].ToString(), 1);
FindPointAndShowState(results[i].ToString(), 1);
}
}
}
else //没有就是一次选多个
{
int allCount = int.Parse(.text);
for (int i = 1; i <= allCount; i++)
{
if (!chooseList.Contains(i.ToString()))
{
chooseList.Add(i.ToString());
Shoot122Manager.Instance.chooseShoot.Add(i.ToString());
Shoot122Manager.Instance.AddOrUpdate(i.ToString(), 1);
FindPointAndShowState(i.ToString(), 1);
}
}
}
@ -77,12 +100,12 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
}
}
if (Input.GetKeyDown(KeyCode.F7))
{
//if (Input.GetKeyDown(KeyCode.F7))
//{
gameObject.SetActive(false);
// gameObject.SetActive(false);
}
//}
}
@ -143,12 +166,16 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
StateClear();
}
void StateClear()
{
Debug.Log("状态清除");
this.Sequence().Stop();
this.Sequence()
.Event(() => { surePage.SetActive(true); })
.Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后关闭确认界面
.Until(() => Input.GetKeyDown(KeyCode.Return)|| surePage.activeInHierarchy==false) //确认后关闭确认界面
.Events(() => {
surePage.SetActive(false);
//关闭所有的标点
@ -156,6 +183,7 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
ResetPointsState();
chooseList.Clear();
Shoot122Manager.Instance.chooseShoot.Clear();
Shoot122Manager.Instance.choosedValue.Clear();
})
@ -164,8 +192,8 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
public override void OnF7Click()
{
base.OnF7Click();
gameObject.SetActive(false);
}
void FaHuoXuanDanAc()
@ -187,7 +215,7 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
manager122.Show122DwonMsg("装弹检测完毕!");
//默认全部都有弹
for (int i = 1; i < 40; i++)
for (int i = 1; i < 41; i++)
{
FindPointAndShowState(i.ToString(), 0);
@ -301,7 +329,7 @@ public class DanYaoZhunBeiPage : UIPageBtnEventBase
}
pointLayout.GetChild(i).GetChild(state).gameObject.SetActive(true);
pointLayout.GetChild(i).gameObject.SetActive(true);
Debug.Log(pointLayout.GetChild(i).GetChild(state).gameObject);
//Debug.Log(pointLayout.GetChild(i).GetChild(state).gameObject);
}
else
{

View File

@ -12,6 +12,12 @@ public class JueDingZhuYuanMsg : MonoBehaviour
public TextMeshProUGUI ;
public CustomTMPDropdown tMPDropdown;
//public te
//第一点确定-出现解算结果-确定是用炮状态(两个自动状态+用炮状态+引信开)-点击确定-调炮
public GameObject ;
public bool isJueSuanOver;//是否解算完毕
@ -34,17 +40,21 @@ public class JueDingZhuYuanMsg : MonoBehaviour
{
if (!isJueSuanOver) //第一步,出现解算结果
{
.text = "01";
.text = "02";
.text = "02";
.text = "02";
.text = "02";
isJueSuanOver = true;
.SetActive(true);
isJueSuanOver = true;
}
if (isJueSuanOver) //如果再次点击确认则开始调炮
if (isJueSuanOver&& Shoot122Manager.Instance.isShootReady) //如果再次点击确认则开始调炮
{
AnimationModel.instance.Show122Tween();
}
}
if (Input.GetKeyDown(KeyCode.F6))
{
if (isJueSuanOver && Shoot122Manager.Instance.isShootReady) //如果再次点击确认则开始调炮
{
AnimationModel.instance.PauseTween();
}
}
}
}

View File

@ -15,13 +15,26 @@ public class SheJiShiShi122Page : UIPageBtnEventBase
Manager122Base manager122;
public CustomTMPDropdown custom1;
public CustomTMPDropdown custom2;
private void Awake()
{
manager122 = Manager122Base.instance;
}
private void OnEnable()
{
//StartCoroutine(InsertFouces());
}
IEnumerator InsertFouces()
{
yield return new WaitForSeconds(0.1f);
ÖîÔª·½Ê½.GetComponent<FocusPage>().focusElements.Insert(0, custom2);
ÖîÔª·½Ê½.GetComponent<FocusPage>().focusElements.Insert(1, custom1);
}
public override void OnF1Click()
@ -73,6 +86,16 @@ public class SheJiShiShi122Page : UIPageBtnEventBase
}
currectPage = pages[index];
currectPage.SetActive(true);
//currectPage.GetComponent<FocusPage>().focusElements.Insert(0, custom1);
//currectPage.GetComponent<FocusPage>().focusElements.Insert(1, custom2);
//StartCoroutine(InsertFouces1());
}
IEnumerator InsertFouces1()
{
yield return new WaitForSeconds(0.1f);
currectPage.GetComponent<FocusPage>().focusElements.Insert(0, custom2);
currectPage.GetComponent<FocusPage>().focusElements.Insert(1, custom1);
}
public void ShowZiDongPage()
@ -83,6 +106,7 @@ public class SheJiShiShi122Page : UIPageBtnEventBase
}
currectPage = pages[0];
currectPage.SetActive(true);
}

View File

@ -101,14 +101,14 @@ public class GuanDaoXunBeiPage : UIPageBtnEventBase
.Until(()=>!choosePage.activeInHierarchy) //等待界面关闭
.Events(() => {
//开始读秒N个时间以后显示坐标
AnimateNumber(¹ßµ¼Ñ°±±ÁÃëText, 0, 20, 5);
AnimateNumber(¹ßµ¼Ñ°±±ÁÃëText, 0, 288, 15);
})
.Delay(5f)
.Delay(15f)
.Events(() => {
//结束后显示结果
±±Ïò½ÇText.text = "256";
×ÝÇã½ÇText.text = "256";
ºáÏò½ÇText.text = "256";
±±Ïò½ÇText.gameObject.SetActive(true);
×ÝÇã½ÇText.gameObject.SetActive(true);
ºáÏò½ÇText.gameObject.SetActive(true);
//北斗结束
})
.Begin();

View File

@ -6,7 +6,17 @@ public class PaoZhangMainPage : UIPageBtnEventBase
{
public List<GameObject> pages=new List<GameObject>();
public Transform selectionsPar;
private void Awake()
{
for (int i = 0; i <= 40; i++)
{
SetOneState(i, 0);
}
}
public override void OnF1Click()
{
base.OnF1Click();
@ -14,6 +24,133 @@ public class PaoZhangMainPage : UIPageBtnEventBase
}
private void OnEnable()
{
if (Shoot122Manager.Instance.isShoot)//打完就清空
{
ShootAll();
return;
}
if (Shoot122Manager.Instance.choosedValue.Count != 0)
{
//每次打开更新一下弹孔状态
foreach (KeyValuePair<string, int> kvp in Shoot122Manager.Instance.choosedValue)
{
int key = int.Parse(kvp.Key);
int value = kvp.Value;
SetOneState(key, value);
}
}
}
public void ShowSelectIcon(int index)
{
if (Shoot122Manager.Instance.isShoot == false)
{
if (Shoot122Manager.Instance.chooseShoot.Count == 0)
{
for (int i = 0; i < selectionsPar.childCount; i++)
{
for (int j = 0; j < 3; j++)
{
selectionsPar.GetChild(i).GetChild(j).gameObject.SetActive(false);
}
selectionsPar.GetChild(i).gameObject.SetActive(false);
}
return;
}
}
}
/// <summary>
/// 设置某个弹孔的状态
/// </summary>
/// <param name="index"></param>
/// <param name="state">3空直接关闭 0有弹 1选中 2留膛</param>
public void SetOneState(int index, int state)
{
string itemName = index.ToString();
if (state == 3)
{
selectionsPar.Find(itemName).gameObject.SetActive(false);
return;
}
for (int i = 0; i < selectionsPar.childCount; i++)
{
if (selectionsPar.GetChild(i).name == itemName)
{
Transform item = selectionsPar.GetChild(i);
item.gameObject.SetActive(true);
for (int j = 0; j < item.childCount-1; j++)
{
item.GetChild(j).gameObject.SetActive(false);
}
item.GetChild(state).gameObject.SetActive(true);
}
}
//switch (state)
//{
// case 0:
// break;
// case 1:
// break;
// case 2:
// break;
//}
}
/// <summary>
/// 所有弹都打空
/// </summary>
void ShootAll()
{
for (int i = 0; i < selectionsPar.childCount; i++)
{
for (int j = 0; j < 3; j++)
{
selectionsPar.GetChild(i).GetChild(j).gameObject.SetActive(false);
}
selectionsPar.GetChild(i).gameObject.SetActive(false);
}
}
//void FindPointAndShowState(string pointName, int state)
//{
// for (int i = 0; i < pointLayout.childCount; i++)
// {
// if (pointName == pointLayout.GetChild(i).name)
// {
// if (state != 3)
// {
// for (int j = 0; j < pointLayout.GetChild(i).childCount; j++)
// {
// pointLayout.GetChild(i).GetChild(j).gameObject.SetActive(false);
// }
// pointLayout.GetChild(i).GetChild(state).gameObject.SetActive(true);
// pointLayout.GetChild(i).gameObject.SetActive(true);
// Debug.Log(pointLayout.GetChild(i).GetChild(state).gameObject);
// }
// else
// {
// for (int j = 0; j < pointLayout.GetChild(i).childCount; j++)
// {
// pointLayout.GetChild(i).GetChild(j).gameObject.SetActive(false);
// }
// pointLayout.GetChild(i).gameObject.SetActive(false);
// }
// break;
// }
// }
//}
public override void OnF2Click() {
base.OnF2Click();
@ -44,6 +181,7 @@ public class PaoZhangMainPage : UIPageBtnEventBase
{
base.OnF6Click();
//目前不知道内容
ManagerPaoZhangBase.instance.ShowDownTip("提示瞄准手取消操作");
}
public override void OnF7Click()

View File

@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
public class FaSheZhenDiPage : UIPageBtnEventBase
@ -8,6 +9,11 @@ public class FaSheZhenDiPage : UIPageBtnEventBase
public List<GameObject> myPages = new List<GameObject>();
public CustomTMPDropdown ;
public CustomTMPInputField ;
public CustomTMPInputField 线;
public GameObject itemPrefab;
public Transform itemParent;
private void OnEnable()
{
enter181 = FindObjectOfType<Enter181Page>();
@ -19,6 +25,22 @@ public class FaSheZhenDiPage : UIPageBtnEventBase
currentIndex = 0;
}
//单炮修正的编辑界面
public override void OnF2Click()
{
base.OnF2Click();
if (currentIndex == 5)
{
if (.text != "" && 线.text != "")
{
GameObject it = Instantiate(itemPrefab, itemParent);
it.transform.GetChild(0).GetComponent<TextMeshProUGUI>().text = .options[.value].text;
it.transform.GetChild(1).GetComponent<TextMeshProUGUI>().text = .text;
it.transform.GetChild(2).GetComponent<TextMeshProUGUI>().text = 线.text;
}
}
}
public override void OnF3Click()
{

View File

@ -11,10 +11,16 @@ public class JiShuZhenDiPage : UIPageBtnEventBase
public CustomTMPDropdown ;
public TextMeshProUGUI text;
public CustomTMPDropdown ;
public Transform tips;
public GameObject xunbeiBtn;
public TextMeshProUGUI xunbeiTip;
public GameObject daohangMsg;
private void Awake()
{
.onValueChanged.AddListener(OnDropChange);
.onValueChanged.AddListener(OnReadChange);
}
public void OnDropChange(int index)
@ -22,6 +28,21 @@ public class JiShuZhenDiPage : UIPageBtnEventBase
text.text= .options[index].text;
}
public void OnReadChange(int value)
{
ShowReadTip(value);
}
void ShowReadTip(int currectIndex)
{
for (int i = 0; i < tips.childCount; i++)
{
tips.GetChild(i).gameObject.SetActive(false);
}
tips.GetChild(currectIndex).gameObject.SetActive(true);
}
private void OnEnable()
{
enter181 = FindObjectOfType<Enter181Page>();
@ -45,9 +66,12 @@ public class JiShuZhenDiPage : UIPageBtnEventBase
{
base.OnF2Click();
if (xunbeiBtn.activeInHierarchy == false)
return;
//F2需要根据不同的界面执行不同的逻辑待定
if (myPages[currentIndex].name == "4-惯导寻北") //点击F2后出现寻北时间
{
xunbeiTip.text = "惯导状态:正在寻北";
myPages[currentIndex].transform.GetChild(1).gameObject.SetActive(true);
StartCoroutine(UpdateTime(myPages[currentIndex].transform.GetChild(1).GetComponent<TextMeshProUGUI>()));
return;
@ -57,11 +81,16 @@ public class JiShuZhenDiPage : UIPageBtnEventBase
IEnumerator UpdateTime(TextMeshProUGUI timeText)
{
for (int i = 0; i <= 100; i++)
for (int i = 896; i >= 0; i--)
{
timeText.text = "寻北时间:" + i;
yield return new WaitForSeconds(1f); // 每秒更新
yield return new WaitForSeconds(0.016f); // 每秒更新
//yield return null;
}
yield return new WaitForSeconds(1);
myPages[currentIndex].transform.GetChild(1).gameObject.SetActive(false);
xunbeiTip.text = "惯导状态:导航";
daohangMsg.SetActive(true);
}
@ -129,7 +158,9 @@ public class JiShuZhenDiPage : UIPageBtnEventBase
break;
case "4-惯导寻北":
myPages[currentIndex].transform.GetChild(1).gameObject.SetActive(true); //打开寻北text --可能要做时间变化
//点击后显示寻北按钮
xunbeiBtn.SetActive(true);
//myPages[currentIndex].transform.GetChild(1).gameObject.SetActive(true); //打开寻北text --可能要做时间变化
break;
}
}

View File

@ -187,4 +187,37 @@ public class CustomTMPDropdown : TMP_Dropdown
RefreshShownValue();
}
//上下键直接切换选项
public void FocusedSelectNext()
{
if (options == null || options.Count == 0) return;
int next = value + 1;
if (next >= options.Count) next = options.Count - 1;
if (next != value)
{
value = next; // <-- 这里 Unity 会自动触发 onValueChanged
}
}
public void FocusedSelectPrevious()
{
if (options == null || options.Count == 0) return;
int prev = value - 1;
if (prev < 0) prev = 0;
if (prev != value)
{
value = prev; // <-- 同样自动触发 onValueChanged
}
}
}

View File

@ -2,6 +2,7 @@ using UnityEngine;
using TMPro;
using UnityEngine.EventSystems;
using System.Collections;
using UnityEngine.UI;
public class CustomTMPInputField : TMP_InputField
{
@ -10,6 +11,34 @@ public class CustomTMPInputField : TMP_InputField
protected override void Awake()
{
base.Awake();
//this.contentType=ContentType.IntegerNumber
//使用字符验证回调
onValidateInput = OnValidateCharacter;
// 添加Outline
Outline ol = gameObject.GetComponent<Outline>();
if (ol == null) ol = gameObject.AddComponent<Outline>();
ol.effectColor = new Color32(0xFF, 0xAB, 0x00, 255);
ol.effectDistance = new Vector2(2, -2);
ol.enabled = false;
}
// 验证每个输入的字符(核心方法)
private char OnValidateCharacter(string text, int charIndex, char addedChar)
{
// 允许数字 0-9
if (addedChar >= '0' && addedChar <= '9')
{
return addedChar;
}
// 允许小数点 .和-
if (addedChar == '.'|| addedChar == '-')
{
return addedChar; // 允许多个小数点,直接返回
}
// 其他字符不允许输入
return '\0';
}
public override void OnPointerClick(PointerEventData eventData)
@ -48,7 +77,9 @@ public class CustomTMPInputField : TMP_InputField
// TMP 原生激活输入框,显示光标
ActivateInputField();
// 高亮自己
Outline ol = gameObject.GetComponent<Outline>();
if (ol != null) ol.enabled = true;
// 强制同步 placeholder 状态
ForceRefresh();
}

View File

@ -200,11 +200,11 @@ public class FocusManager : MonoBehaviour
if (Input.GetKeyDown(KeyCode.UpArrow)) currentPage.DropdownSelectPrevious();
if (Input.GetKeyDown(KeyCode.DownArrow)) currentPage.DropdownSelectNext();
if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
currentPage.DropdownSubmit(); // 内部判断是打开还是提交
//if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
// currentPage.DropdownSubmit(); // 内部判断是打开还是提交
if (Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Escape))
currentPage.DropdownToggle();
//if (Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Escape))
// currentPage.DropdownToggle();
}
else
{

View File

@ -10,6 +10,9 @@ public class FocusPage : MonoBehaviour
[Header("页面焦点元素")]
public List<Selectable> focusElements = new List<Selectable>();
//有些元素要提前录入
public List<Selectable> focusElementStart = new List<Selectable>();
private int currentFocusIndex = -1;
private Coroutine focusCoroutine;
private bool isSwitchingFocus = false;
@ -24,6 +27,8 @@ public class FocusPage : MonoBehaviour
public bool HasPreviousFocus => currentFocusIndex > 0;
public bool HasNextFocus => currentFocusIndex < FocusCount - 1;
public bool isNeedStartShow = false;
void OnEnable()
{
@ -61,6 +66,14 @@ public class FocusPage : MonoBehaviour
{
focusElements.Clear();
if (focusElementStart.Count != 0)
{
foreach (var item in focusElementStart)
{
focusElements.Add(item);
}
}
// 获取所有 Selectable (包括隐藏)
Selectable[] allSelectables = GetComponentsInChildren<Selectable>(true);
@ -76,7 +89,8 @@ public class FocusPage : MonoBehaviour
focusElements.Add(sel);
}
//if (FocusCount > 0) SetFocusImmediate(0);
if (FocusCount > 0&& isNeedStartShow) SetFocusImmediate(0);
}
void Update()
@ -164,8 +178,15 @@ public class FocusPage : MonoBehaviour
#endregion
#region Dropdown
public void DropdownSelectNext() { if (isDropdownExpanded) currentCustomTMPDropdown?.SelectNext(); }
public void DropdownSelectPrevious() { if (isDropdownExpanded) currentCustomTMPDropdown?.SelectPrevious(); }
public void DropdownSelectNext() {
//if (isDropdownExpanded) currentCustomTMPDropdown?.SelectNext();
currentCustomTMPDropdown?.FocusedSelectNext();
}
public void DropdownSelectPrevious() {
//if (isDropdownExpanded) currentCustomTMPDropdown?.SelectPrevious();
currentCustomTMPDropdown?.FocusedSelectPrevious();
}
public void DropdownSubmit() { if (focusDisabled) return; currentCustomTMPDropdown?.SubmitSelection(); }
public void DropdownToggle() { if (currentCustomTMPDropdown != null) currentCustomTMPDropdown.ToggleDropdown(); StartCoroutine(UpdateDropdownNextFrame()); }
@ -271,6 +292,8 @@ public class FocusPage : MonoBehaviour
isDropdownExpanded = false;
customInputField.Activate();
SetHighlight(customInputField, true);
if (!customInputField.GetComponent<Outline>().enabled)
SetHighlight(customInputField, true);
break;
case CustomTMPDropdown customTMPDropdown:
currentCustomTMPDropdown = customTMPDropdown;

View File

@ -23,12 +23,13 @@ public class ManagerPaoZhangBase : MonoBehaviour
{
if (instance == null)
instance = this;
ShowSystemStartPage();
}
private void OnEnable()
{
ShowSystemStartPage();
}
public void ShowSystemStartPage()

View File

@ -50,7 +50,7 @@ public class XiTongGuanLiPZ : UIPageBtnEventBase
base.OnESCClick();
ManagerPaoZhangBase.instance.ShowDownTip("");
ShowSelect(0);
ManagerPaoZhangBase.instance.paozhangMain.SetActive(true);
Destroy(gameObject);
}

View File

@ -7,7 +7,7 @@ public class UIPageBtnEventBase:MonoBehaviour
//public ModelBtnManager modelBtnManager;
//将界面上的模型按钮映射到实体键盘输入
private void Update()
public virtual void Update()
{
if (Input.GetKeyDown(KeyCode.F1))
{

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7d4f429bf057d5540ad8bc61b6ef5784
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 85eb2a2df8a06514e909a2776ad1b59d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ef1f1f697de46714d8f444be8802a171
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 76f644c50d4dd5841b9bf7288fd71926
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 36af8719a7b649b49b413554632ccbd2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4cf34439400350d4f8d8d36a24143bd9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f9e2ff7e795eedf41926722528adb3e2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8de842426619e844d94a31ad40e9b8b6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c8abb509f5460d64d8fa7a9c71ad7125
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bb9d9dd4a0be0ba48906446f54afcde2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 17e782e00820d5945a018229808b01b7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -6,7 +6,7 @@ TextureImporter:
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 1
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
@ -36,13 +36,13 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
@ -51,9 +51,9 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
@ -107,7 +107,7 @@ TextureImporter:
outline: []
physicsShape: []
bones: []
spriteID:
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Some files were not shown because too many files have changed in this diff Show More