C# 统一:不能将滚动面板切换为垂直而不是水平?

C# 统一:不能将滚动面板切换为垂直而不是水平?,c#,unity3d,scroll,C#,Unity3d,Scroll,好的,我发现C#中的Unity滚动面板有问题。我从这里下载了这个字符选择器,它由一个附加到滚动面板的脚本组成: 它工作得很好,但问题是我不能让它垂直滚动而不是水平滚动。我在实际的滚动面板上选中了“垂直”布尔值而不是水平值,然后在脚本中我将基于x值的位置更改为y值 我在哪里发表了评论,下面是脚本: float[] distance; bool dragging = false; int minButtonNum; int currentSelectedPly = -1

好的,我发现C#中的Unity滚动面板有问题。我从这里下载了这个字符选择器,它由一个附加到滚动面板的脚本组成:

它工作得很好,但问题是我不能让它垂直滚动而不是水平滚动。我在实际的滚动面板上选中了“垂直”布尔值而不是水平值,然后在脚本中我将基于x值的位置更改为y值

我在哪里发表了评论,下面是脚本:

float[] distance;

    bool dragging = false;

    int minButtonNum;
    int currentSelectedPly = -1;

    public float objectScale = 1.7f;
    public int bttnDistance = 300;

    void OnEnable() {
        //txtGeneralCash.text = "" + PlayerPrefs.GetInt ("money", 0);
    }

    void Start(){
        distance = new float[prefab.Length];

        //instatiate the prefab
        for(int i=0; i<prefab.Length;i++){
            prefab[i] =  Instantiate(prefab[i],center.transform.position,camInUse.transform.rotation) as GameObject;
            prefab [i].transform.SetParent(panel.transform);
            Vector3 pos = prefab[i].GetComponent<RectTransform>().anchoredPosition;
            pos.x += (i * bttnDistance); //**CHANGED TO POS.Y
            prefab [i].GetComponent<RectTransform> ().anchoredPosition = pos; 
        }
    }

    void Update(){
        //calculate the relative distance
        for(int i=0;i<prefab.Length;i++){
            distance [i] = Mathf.Abs (center.transform.position.x - prefab [i].transform.position.x); //CHANGED THESE TO .Y
        }

        float minDistance = Mathf.Min (distance);

        // Aplly the scale to object
        for(int a=0;a<prefab.Length;a++){
            if (minDistance == distance [a]) {
                minButtonNum = a;

                //this is when each char is selected !!!!!!!!!!!!!!!
                if(minButtonNum != currentSelectedPly){
                    //lookAtPrice (minButtonNum);
                    scaleButtonCenter (minButtonNum);
                    currentSelectedPly = minButtonNum;
                    txtName.text = prefab [minButtonNum].GetComponent<CharacterProperty> ().nameObj;
                    bgMat.color = prefab [minButtonNum].GetComponent<CharacterProperty> ().color;
                }
            }
        }

        // if the users aren't dragging the lerp function is called on the prefab
        if(!dragging){
            LerpToBttn (currentSelectedPly* (-bttnDistance));
        }

    }

    /*
     *  Lerp the nearest prefab to center 
     */
    void LerpToBttn(int position){
        float newX = Mathf.Lerp (panel.anchoredPosition.x,position,Time.deltaTime*7f); //CHANGED TO .Y
        Vector2 newPosition = new Vector2 (newX,panel.anchoredPosition.y);
        panel.anchoredPosition = newPosition;
    }

    /*
     * Set the scale of the prefab on center to 2, other to 1
     */
    public void scaleButtonCenter (int minButtonNum){
        for (int a = 0; a < prefab.Length; a++) {
            if (a == minButtonNum) {
                StartCoroutine (ScaleTransform(prefab [a].transform,prefab [a].transform.localScale,new Vector3 (objectScale,objectScale,objectScale)));
            } else {
                StartCoroutine (ScaleTransform(prefab [a].transform,prefab [a].transform.localScale,new Vector3 (1f, 1f, 1f)));
            }
        }
    }

    /*
     * If the prefab is not free, show the price button


    /*
     * Courutine for change the scale
     */
    IEnumerator ScaleTransform(Transform transformTrg,Vector3 initScale,Vector3 endScale){
        float completeTime = 0.2f;//How much time will it take to scale
        float currentTime = 0.0f;
        bool done = false;

        while (!done){
            float percent = currentTime / completeTime;
            if (percent >= 1.0f){
                percent = 1;
                done = true;
            }
            transformTrg.localScale = Vector3.Lerp(initScale, endScale, percent);
            currentTime += Time.deltaTime;
            yield return new WaitForEndOfFrame();
        }
    }

    /*
     * Called by the canvas, set dragging to true for preventing lerp when users are dragging
     */
    public void StartDrag(){
        dragging = true;
    }

    /*
     * Called by the canvas, set dragging to true for preventing lerp when users are dragging
     */
    public void EndDrag(){
        dragging = false;
    }

    /*
     * Called when character is selected, it change the player model
     */
    public void CharacterSelected(){
        bool oneEnable = false;
        string nameSelected = prefab [currentSelectedPly].GetComponent<CharacterProperty> ().name;
        nameSelected = nameSelected.Split('(')[0];
        GameObject player = GameObject.Find ("CharactersPlayer");
        if(player != null){
            foreach (Transform child in player.transform) {
                if (child.gameObject.name == nameSelected) {
                    child.gameObject.SetActive (true);
                    oneEnable = true;
                    PlayerPrefs.SetString ("SelectedPlayer", nameSelected);

                } else {
                    child.gameObject.SetActive (false);
                }
            }

            // if no one was selected
            if (oneEnable == false) {
                player.transform.GetChild (0).gameObject.SetActive (true);
            }
        }
    }
float[]距离;
布尔拖动=假;
内耳廓;
int currentSelectedPly=-1;
公共浮动对象比例=1.7f;
公共int bttnDistance=300;
void OnEnable(){
//txtGeneralCash.text=”“+PlayerPrefs.GetInt(“货币”,0);
}
void Start(){
距离=新浮子[预制长度];
//安装预制件

(inti=0;我问过写剧本的人了吗?是的,等待他的回答