需要将位置z设置为0

Need to set position z to 0

我正在制作一个成就系统以在解锁时保存我的所有成就并显示哪些成就是not.When我尝试实例化一个预制件,z 位置使我的预制件看起来很小而且不合适。我需要使用 C# 代码将位置 z 设置为 0。在我实例化预制件时,z 位置值为 1557.057 并使预制件在我的面板中看起来很小。

用于在我的面板中实例化预制件的代码

using UnityEngine;
using System.Collections;

public class AchievementManager : MonoBehaviour {

    public GameObject achievementPrefab;

    // Use this for initialization
    void Start () 
    {
        CreateAchievement("Streak");
        CreateAchievement("Streak");
        CreateAchievement("Streak");
    }

    public void CreateAchievement(string category)
    {
        GameObject achievement = (GameObject)Instantiate(achievementPrefab);
        SetAchievementInfo(category, achievement);   
    }

    public void SetAchievementInfo(string category , GameObject achievement)
    {
        achievement.transform.SetParent(GameObject.Find(category).transform);
        achievement.transform.localScale = new Vector3(1, 1, 1);
    }
}

使用

achievement.transform.localPosition = new Vector3(0,0,0);

将位置 z 设置为 0。

Instantiate 可以将位置和旋转分别作为第二个和第三个参数,因此您可以像这样用 category 对象的世界位置和旋转来实例化对象:

GameObject achievement = (GameObject)Instantiate(
    achievementPrefab,
    GameObject.Find(category).transform.position,
    GameObject.Find(category).transform.rotation
);

另外,transform.SetParent()可以取second parameterworldPositionStays,你可以试试设置为false

achievement.transform.SetParent(GameObject.Find(category).transform, false);

最后可以直接设置Z(以下只重置Z):

achievement.transform.localPosition = new Vector3(
    achievement.transform.localPosition.x,
    achievement.transform.localPosition.y,
    0
);