Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在一个轴上统一旋转UI元素?_C#_Unity3d - Fatal编程技术网

C# 如何在一个轴上统一旋转UI元素?

C# 如何在一个轴上统一旋转UI元素?,c#,unity3d,C#,Unity3d,这个问题很简单 我所拥有的只是一个新项目,在画布中有一个图像。图像附带了一个脚本,名为旋转器,在旋转器脚本中,我所做的就是: if (Input.GetKeyDown(KeyCode.Space)) { float angle = Random.Range(0, 90); transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle)); } 但是结果是

这个问题很简单

我所拥有的只是一个新项目,在画布中有一个图像图像附带了一个脚本,名为旋转器,在旋转器脚本中,我所做的就是:

if (Input.GetKeyDown(KeyCode.Space))
        {
            float angle = Random.Range(0, 90);
            transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
        }

但是结果是,图像总是在XY上旋转,我只想绕Z轴旋转,这里有什么我遗漏的吗?

在单行中:

transform.rotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, angle);
绩效(针对相关人员):

transform.rotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, angle);
transform.eulerAngles
是一个getter,内部调用一个函数来计算角度,因此,如果我们多次使用此函数,最好缓存结果:

var eulerAngles = transform.eulerAngles;
transform.rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, angle);

尝试
Quaternion.Euler(新矢量3(transform.rotation.x,transform.rotation.y,angle))
@jiveturkey我不知道是谁对你的评论投了赞成票,但这是错误的^^四元数有4个分量x,y,z和w。如果您不知道自己在做什么,您将永远无法单独访问这些内容,更不用说您的访问方式;)您的UI是在屏幕空间覆盖中还是父对象之一具有不同的旋转?我只是更新了矢量3的x和y值。抱歉,
eulerAngles
不是
rotation
。如答案所示。希望你能想到这一点。