0

我是 C# 的初学者,甚至是 Unity 的初学者。我试图在这里寻找很多东西,但没有找到解决问题的东西。这似乎是一个超级简单的线性搜索,但它不适用于 iOS 和 Android。

当我单击顶部的播放按钮时,它仅适用于我的 Mac。我一点头绪都没有。仅供参考,数组长度为 119。

我有一个JSON,结构如下:

{
    "Items": [
        {
            "name": "Hydrogen",
            "symbol": "H",
            "boil": 231
        },
        {
            "name": "Sasdsad",
            "symbol": "S",
            "boil": 213
        }
    ]
}

我已经使用 C# 类对其进行了解析,

public class ChemElements {

public string name;
public float boil;
public string symbol;


}

然后在 start() 方法中,我将它放在一个名为 x 的数组中:

ChemElements[] x = null;

void start(){
path = Application.streamingAssetsPath + "/periodic.json";
jsonstring = File.ReadAllText(path);
x = JsonHelper.FromJson<ChemElements>(jsonstring);
}

JsonHelper 如下,它只是一个反序列化 JSON 数组的辅助类:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class JsonHelper
{
    public static T[] FromJson<T>(string json)
    {
        Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
        return wrapper.Items;
    }

    public static string ToJson<T>(T[] array)
    {
        Wrapper<T> wrapper = new Wrapper<T>();
        wrapper.Items = array;
        return JsonUtility.ToJson(wrapper);
    }

    public static string ToJson<T>(T[] array, bool prettyPrint)
    {
        Wrapper<T> wrapper = new Wrapper<T>();
        wrapper.Items = array;
        return JsonUtility.ToJson(wrapper, prettyPrint);
    }

    [System.Serializable]
    private class Wrapper<T>
    {
        public T[] Items;
    }
}

我想要做的是通过线性搜索(一个非常简单的)通过将TextMeshPro文本与x(数组)的符号属性匹配来搜索ChemElements []的数组x。如果找到符号,我想为 ElPreview 的 alpha 设置一个新值

public void eleClicked(){
        var eleBtn = GameObject.Find(EventSystem.current.currentSelectedGameObject.name);
        for(int i = 0; i < x.Length; i++){
            if(x[i].symbol == eleBtn.GetComponentInChildren<TMP_Text>().text){
                    ElPreview.canvasRenderer.SetAlpha(1f);
            }
        }



    }

eleClicked() 是一个 onclick 函数。

正如我之前所说,在统一中,它按预期运行。它将 alpha 值更改为 1,使其显示(以前为 0)。

而在 iOS 和 Android 上却没有。我假设的 alpha 值仍然是 0,因为它仍然是透明的。

我试图删除线性搜索,只更改 alpha 值,它适用于 iOS 和 Android,因此我知道问题出在线性搜索代码中。

非常感谢!

4

0 回答 0