完善键盘,区分数字和其他

FUJIFILM
zc 2025-07-14 19:29:10 +08:00
parent 93507fff83
commit 05f9f3d4dc
16 changed files with 1083 additions and 54 deletions

View File

@ -1281,7 +1281,8 @@ MonoBehaviour:
model: {fileID: 6293017588140709312}
doTweenTime: 0.3
designCoverModelItem: {fileID: 9095075417828674992}
renderCamera: {fileID: 2276259505965401185}
previewCamera: {fileID: 2276259505965401185}
designCamera: {fileID: 2572391983687865557}
--- !u!4 &6293017588140709312 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5925587547739504176, guid: 454073324e4bb4b439eed7022d8c2bf9,

File diff suppressed because it is too large Load Diff

View File

@ -221,7 +221,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_SizeDelta: {x: -17, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &6276670929431658983
CanvasRenderer:
@ -1641,7 +1641,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &567649602442340089
RectTransform:
m_ObjectHideFlags: 0
@ -3399,14 +3399,14 @@ MonoBehaviour:
m_VerticalScrollbarEventHandler: {fileID: 0}
m_LayoutGroup: {fileID: 0}
m_ScrollSensitivity: 1
m_ContentType: 0
m_ContentType: 2
m_InputType: 0
m_AsteriskChar: 42
m_KeyboardType: 0
m_KeyboardType: 4
m_LineType: 0
m_HideMobileInput: 0
m_HideSoftKeyboard: 0
m_CharacterValidation: 0
m_CharacterValidation: 2
m_RegexValue:
m_GlobalPointSize: 40
m_CharacterLimit: 0

View File

@ -1166,6 +1166,16 @@ PrefabInstance:
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7898714653653960622, guid: ec1221012f9c7084492b9007422cc1b7,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7898714653653960622, guid: ec1221012f9c7084492b9007422cc1b7,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8611488140566695850, guid: ec1221012f9c7084492b9007422cc1b7,
type: 3}
propertyPath: m_Name

View File

@ -0,0 +1,25 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace HK.Keyboard
{
public class ColorsChange : MonoBehaviour
{
[SerializeField] List<Color> colors = new List<Color>();
public GameObject item;
public Keyboard keyboard;
private void Awake()
{
keyboard = GetComponentInParent<Keyboard>();
foreach (var color in colors)
{
var o = GameObject.Instantiate(item, item.transform.parent);
o.SetActive(true);
o.GetComponent<Image>().color = color;
o.GetComponent<Button>().onClick.AddListener(() => { keyboard.SetColor(color); });
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1f34fe33e2d74ccfadf18715a13a5af2
timeCreated: 1752477208

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace HK.Keyboard

View File

@ -5,11 +5,19 @@ using UnityEngine.UI;
namespace HK.Keyboard
{
public enum KeyType
{
None,
Number,
}
public class KeyBind : MonoBehaviour
{
[SerializeField] public string keyName;
[SerializeField] public bool isPic = false;
[SerializeField] public Image image;
[SerializeField] public KeyType keyType = KeyType.None;
private Button button;
public Action<string> onClickAction;
private void Awake()
@ -23,12 +31,18 @@ namespace HK.Keyboard
// GetComponentInChildren<TMP_Text>().text = keyName;
}
GetComponent<Button>().onClick.AddListener(OnClick);
button = GetComponent<Button>();
button.onClick.AddListener(OnClick);
}
private void OnClick()
{
onClickAction?.Invoke(keyName);
}
public void SetInteractable(bool isInteractable)
{
button.interactable = isInteractable;
}
}
}

View File

@ -8,6 +8,12 @@ using ZGame;
namespace HK.Keyboard
{
public enum KeyboardType
{
All,
NumberOnly,
}
public class Keyboard : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public TMP_InputField inputField;
@ -16,9 +22,16 @@ namespace HK.Keyboard
public GameObject NumBoardUnshifted;
public GameObject NumBoardShifted;
public Button btnClickClose;
public KeyboardType keyboardType = KeyboardType.All;
public FontsChange fontChange;
public ColorsChange colorChange;
public Keyboard_Chin chin;
private List<KeyBind> keyBinds;
private List<KeyBind> keyBinds_NumberOnly = new List<KeyBind>();
private List<KeyBind> keyBinds_LetterOnly = new List<KeyBind>();
private List<KeyBind> keyBinds_PinyinOnly = new List<KeyBind>();
private List<KeyBind> keyBinds_Switch;
private Action OKAction;
public bool isHideOnAwake = false;
@ -75,9 +88,41 @@ namespace HK.Keyboard
OKAction = args.OKAction;
}
keyboardType = args.keyboardType;
ChangeKeyboard();
colorChange.gameObject.SetActive(args.isChangeColor);
fontChange.gameObject.SetActive(args.isChangeFont);
gameObject.SetActive(true);
}
void ChangeKeyboard()
{
switch (keyboardType)
{
case KeyboardType.All:
ShowOnlyOne(AlphaBoardUnshifted);
foreach (var key in keyBinds)
{
key.SetInteractable(true);
}
break;
case KeyboardType.NumberOnly:
ShowOnlyOne(NumBoardUnshifted);
foreach (var key in keyBinds)
{
if (key.keyType == KeyType.Number)
key.SetInteractable(true);
else
key.SetInteractable(false);
}
break;
default:
throw new ArgumentOutOfRangeException();
}
}
void ShowOnlyOne(GameObject go)
{
AlphaBoardUnshifted.SetActive(false);
@ -198,6 +243,11 @@ namespace HK.Keyboard
inputField.fontAsset = font;
}
public void SetColor(Color color)
{
inputField.textComponent.color = color;
}
private bool isEnter;
public void OnPointerEnter(PointerEventData eventData)

View File

@ -10,11 +10,46 @@ namespace HK.Keyboard
public override int Id => EventId;
public TMP_InputField inputField;
public bool isChangeColor;
public bool isChangeFont;
public KeyboardType keyboardType;
public Action OKAction;
public OpenKeyboardEventArgs(TMP_InputField inputField, Action okAction)
{
this.inputField = inputField;
this.isChangeColor = false;
this.isChangeFont = false;
this.keyboardType = KeyboardType.All;
OKAction = okAction;
}
public OpenKeyboardEventArgs(TMP_InputField inputField, bool isChangeColor, Action okAction)
{
this.inputField = inputField;
this.isChangeColor = isChangeColor;
this.isChangeFont = false;
this.keyboardType = KeyboardType.All;
OKAction = okAction;
}
public OpenKeyboardEventArgs(TMP_InputField inputField, bool isChangeColor, bool isChangeFont, Action okAction)
{
this.inputField = inputField;
this.isChangeColor = isChangeColor;
this.isChangeFont = isChangeFont;
this.keyboardType = KeyboardType.All;
OKAction = okAction;
}
public OpenKeyboardEventArgs(TMP_InputField inputField, bool isChangeColor, bool isChangeFont,
KeyboardType keyboardType,
Action okAction)
{
this.inputField = inputField;
this.isChangeColor = isChangeColor;
this.isChangeFont = isChangeFont;
this.keyboardType = keyboardType;
OKAction = okAction;
}
}

View File

@ -26,8 +26,12 @@ namespace HK.Keyboard
private void SelectInputField(string arg0)
{
EventManager.Instance.FireNow(OpenKeyboardEventArgs.EventId,
new OpenKeyboardEventArgs(inputField, OKAction));
if (inputField.contentType == TMP_InputField.ContentType.IntegerNumber)
EventManager.Instance.FireNow(OpenKeyboardEventArgs.EventId,
new OpenKeyboardEventArgs(inputField, false, false, KeyboardType.NumberOnly, OKAction));
else
EventManager.Instance.FireNow(OpenKeyboardEventArgs.EventId,
new OpenKeyboardEventArgs(inputField, false, false, OKAction));
}
}
}

View File

@ -63,9 +63,11 @@ namespace ZXL.Helper
try
{
// 创建临时RenderTexture
// 创建支持透明度的临时RenderTexture
tempRenderTexture = RenderTexture.GetTemporary(
camera.pixelWidth, camera.pixelHeight, 24, RenderTextureFormat.Default);
camera.pixelWidth, camera.pixelHeight, 24,
RenderTextureFormat.ARGB32, // 使用支持Alpha通道的格式
RenderTextureReadWrite.Default);
// 设置相机渲染到临时RenderTexture
camera.targetTexture = tempRenderTexture;

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using DG.Tweening;
using UnityEngine;
using UnityEngine.Serialization;
using ZGame;
using ZXL.Helper;
@ -15,12 +16,8 @@ namespace Runtime
[SerializeField] float doTweenTime = 1f;
[SerializeField] DesignCoverModelItem designCoverModelItem;
[SerializeField] Camera renderCamera;
// [SerializeField] private int index;
private void Awake()
{
}
[SerializeField] Camera previewCamera;
[SerializeField] Camera designCamera;
[ContextMenu("TestPlay")]
public void PlayIndex(int index)
@ -30,12 +27,33 @@ namespace Runtime
}
[ContextMenu("GenPreviewImage")]
public byte[] GenPreviewImage()
public List<byte[]> GenPreviewImage()
{
var texture2D = TextureHelper.SaveCameraToTexture(renderCamera);
var bytes = texture2D.EncodeToPNG();
var texture2D = TextureHelper.SaveCameraToTexture(previewCamera);
var previewBytes = texture2D.EncodeToPNG();
var texture2D1 = TextureHelper.SaveCameraToTexture(designCamera);
var designBytes = texture2D1.EncodeToPNG();
try
{
// save
#if (PLATFORM_STANDALONE_WIN || UNITY_STANDALONE_WIN) && !UNITY_EDITOR
string folder = $"{Application.persistentDataPath}/Notebook/{DateTime.Now.Ticks}";
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
File.WriteAllBytes(Path.Combine(folder, "previewImage.png"), previewBytes);
File.WriteAllBytes(Path.Combine(folder, "designImage.png"), designBytes);
#endif
}
catch (Exception e)
{
UnityEngine.Debug.Log(e);
}
// File.WriteAllBytes($"{Application.dataPath}/tupian.png", bytes);
return bytes;
return new List<byte[]> { previewBytes, designBytes };
}
}
}

View File

@ -138,8 +138,15 @@ namespace Runtime
/// </summary>
public int count;
/// <summary>
/// 预览图
/// </summary>
public byte[] previewImage;
public byte[] tifImage;
/// <summary>
/// 设计图
/// </summary>
public byte[] designImage;
}
public class ShoppingCartManager : ManagerBase<ShoppingCartManager>

View File

@ -70,7 +70,8 @@ namespace HK
if (args.isShow_InputText && !args.isShow_Sticker)
{
EventManager.Instance.FireNow(this,
new OpenKeyboardEventArgs(inpContent, inpContent.GetComponent<TMP_InputField_Register>().OKAction));
new OpenKeyboardEventArgs(inpContent, true, true,
inpContent.GetComponent<TMP_InputField_Register>().OKAction));
}
}

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using Data;
using Runtime;
using UnityEngine.UI;
@ -62,15 +63,16 @@ namespace HK
{
var index = PlayerPersistent.GetInt("ProductIndex");
var informationData = ExcelManager.NoteBookInformation.GetData(index);
byte[] bytes = notebook.GenPreviewImage();
List<byte[]> bytes = notebook.GenPreviewImage();
var cartData = new ShoppingCartData()
{
bookAmount = informationData.BookPrice+informationData.DesignPrice,
bookAmount = informationData.BookPrice + informationData.DesignPrice,
bookName = informationData.BookEnglishName,
bookDiscount = informationData.DiscountPrice,
count = 1,
previewImage = bytes
previewImage = bytes[0],
designImage = bytes[1]
};
ShoppingCartManager.Instance.AddToCart(cartData);
UIManager.Instance.ShowUIOnly(nameof(ShoppingCartUI));