Vector3 v3 = Vector3.one;
Vector2 v2 = v3;
वेक्टर 3 को स्पष्ट रूप से वेक्टर 2 में परिवर्तित किया जा सकता है (जेड खारिज कर दिया गया है)।
http://docs.unity3d.com/ScriptReference/Vector2-operator_Vector3.html
यदि आपको बहुत सारे रूपांतरण करने हैं तो आपको अपने वैक्टर का उपयोग करने के तरीके को बदलना पड़ सकता है। दो परीक्षण करें और उन्हें देखने के लिए कि कौन सा आपके लिए काम करता है।
TESTS के साथ अद्यतन करें:
चूंकि आपने पूछा था कि कौन सा सबसे तेज है, मैंने यूनिटी में प्रत्येक के 10000000 रूपांतरण चलाने वाला एक परीक्षण बनाया। ऐसा प्रतीत होता है कि प्रारंभिक संस्करण इस मामले में सबसे तेज है। लेकिन, आपको हमेशा उसी का उपयोग करना चाहिए जो आपके स्वयं के संदर्भ के अनुकूल हो, इसलिए मैं आपको सलाह देता हूं कि आप अपने खेल में अपने परीक्षण चलाएं।
TestConvertByOperation 10000000 उदाहरण: 0.2714049s
TestConvertByCasting 10000000 उदाहरण: 0.286027s
TestConvertByInitializing 10000000 उदाहरण: 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;
}
}