处理矢量时的正确语法是什么

本文关键字:语法 是什么 处理 | 更新日期: 2023-09-27 18:26:48

所以我正在制作一个保存和加载玩家坐标的按钮,这样,如果玩家在飞机上向左走5步,当我单击保存、离开,然后单击加载时,我将在这5步的左边。我最近完成了一个问题的代码,我不知道处理vector3时的正确语法是什么。以下是我的代码:

反馈总是值得赞赏的;)

Vector3 lastPosx = Player.transform.position.x;
    Vector3 lastPosy = Player.transform.position.y;
    Vector3 lastPosz = Player.transform.position.z; //Vector3,int or float
    //Creates A Variable Called lastPosition Which is The Postion Of My Character
    PlayerPrefs.SetFloat ("X", lastPosx);
    PlayerPrefs.SetFloat ("Y", lastPosy);
    PlayerPrefs.SetFloat ("Z", lastPosz);//SetFloat Or Setint?
}
public void Load()
{
    //Float ,int or vector3?
    float teleportx = PlayerPrefs.GetFloat("X");
    float teleporty = PlayerPrefs.GetFloat ("Y");
    float teleportz = PlayerPrefs.GetFloat ("Z");//GetFloat Or Getint?
    Player.transform.position = new Vector3(teleportx, teleporty, teleportz);
}

处理矢量时的正确语法是什么

Vector3类存储三维坐标的所有三个分量,因此不需要像创建三个单独的Vector3对象那样。

但是在保存时,您不需要创建Vector3——您可以直接使用转换中的值,然后在Load()方法中创建Vector3

public void Save()
{
    PlayerPrefs.SetFloat("X", Player.transform.position.x);
    PlayerPrefs.SetFloat("Y", Player.transform.position.y);
    PlayerPrefs.SetFloat("Z", Player.transform.position.z);
}
public void Load()
{
    // Vector3 has a constructor that takes 3 floats
    // Vector3(float x, float y, float z)
    Vector3 lastPosition = new Vector3(PlayerPrefs.GetFloat("X"),
                                       PlayerPrefs.GetFloat("Y"),
                                       PlayerPrefs.GetFloat("Z"));
    Player.transform.position = lastPosition;
}