我正在制作一个游戏,其中我以相同的值旋转所有对象。如果我能以某种方式旋转所有对象而不必在每个对象上使用transform.rotate函数,则这将对我有很大帮助(转换效率很低)。 我当时正在考虑使转换静态化,但这似乎是无法实现的。我也不能将它们放在一个对象中并移动它,因为它会改变它们的位置。您有什么建议吗?我们非常感谢您的帮助。
编辑:感谢您的答复。我的目标是旋转具有相同值但不是通用方式的对象。 我不想在每个对象中使用转换。
void Update()
{
if (Input.GetMouseButton(0))
{
rotX = Input.GetAxis("Mouse X") * sensitivity * Mathf.Deg2Rad;
transform.Rotate(Vector3.forward, rotX);
}
}
我希望它们具有相同的transform.rotation和不同的transform.position和transform.scale。这种方式transform.Rotate()将仅使用一次,而不是对象数量的次数。 我想避免访问每个对象的变换。
答案 0 :(得分:0)
您能给我们更详细的例子吗?在性能方面,如果没有示例代码,很难说出哪种方法对您而言更好。
在这里,您可以找到一些有关使用物理引擎(使用RigidBody.MoveRotation()
)与Transform.Rotate
:https://answers.unity.com/questions/294452/rotation-performance.html
答案 1 :(得分:0)
创建一个名为script
的控制器。
有UnityEngine.Object.FindObjectsOfType<GameObject>();
现在您有array
个中的GameObject
个。使用foreach
或循环并设置transform.rotation
。
现在您可以一次移动所有对象。
GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>() ;
foreach(object go in allObjects)
if (go.activeInHierarchy)
print(thisObject+" is an active object");