Vector3 v3 = Vector3.one;
Vector2 v2 = v3;
Vector3s können implizit in Vector2 konvertiert werden (z wird verworfen).
http://docs.unity3d.com/ScriptReference/Vector2-operator_Vector3.html
Wenn Sie viele Konvertierungen vornehmen müssen, müssen Sie möglicherweise die Art und Weise ändern, wie Sie Ihre Vektoren verwenden. Machen Sie zwei Tests und messen Sie sie, um festzustellen, welcher für Sie funktioniert.
UPDATE MIT TESTS:
Da Sie gefragt haben, welches das schnellste ist, habe ich einen Test erstellt, in dem jeweils 10000000 Conversions in Unity ausgeführt werden. In diesem Fall scheint die Initialisierungsversion am schnellsten zu sein. ABER du solltest immer die verwenden, die zu deinem eigenen Kontext passt, also rate ich dir, deine eigenen Tests in deinem Spiel durchzuführen.
TestConvertByOperation 10000000 Instanzen: 0.2714049s
TestConvertByCasting 10000000 Instanzen: 0.286027s
TestConvertByInitializing 10000000 Instanzen: 0.1458781s
using UnityEngine;
public class TestVector3Conversion : MonoBehaviour
{
readonly int iterations = 10000000;
Vector3 testVector = new Vector3(3f, 14f, 42f);
void Start()
{
Debug.Log(string.Format("TestConvertByOperation {0} instances: {1}s", iterations, TestConvertByOperation()));
Debug.Log(string.Format("TestConvertByCasting {0} instances: {1}s", iterations, TestConvertByCasting()));
Debug.Log(string.Format("TestConvertByInitializing {0} instances: {1}s", iterations, TestConvertByInitializing()));
}
float TestConvertByOperation()
{
var timeStart = Time.realtimeSinceStartup;
for (int i = 0; i < iterations; i++)
{
Vector2 v2 = testVector;
}
return Time.realtimeSinceStartup - timeStart;
}
float TestConvertByCasting()
{
var timeStart = Time.realtimeSinceStartup;
for (int i = 0; i < iterations; i++)
{
Vector2 v2 = (Vector2)testVector;
}
return Time.realtimeSinceStartup - timeStart;
}
float TestConvertByInitializing()
{
var timeStart = Time.realtimeSinceStartup;
for (int i = 0; i < iterations; i++)
{
Vector2 v2 = new Vector2(testVector.x, testVector.y);
}
return Time.realtimeSinceStartup - timeStart;
}
}