Vector3 v3 = Vector3.one;
Vector2 v2 = v3;
ভেক্টর 3 গুলি সুস্পষ্টভাবে ভেক্টর 2 এ রূপান্তরিত হতে পারে (z বাতিল করা হয়)।
http://docs.unity3d.com/ScriptReference/Vector2-operator_Vector3.html
আপনাকে যদি অনেকগুলি রূপান্তর করতে হয় তবে আপনার ভেক্টরগুলি ব্যবহার করার উপায়টি আপনাকে পরিবর্তন করতে হতে পারে। কোনটি আপনার পক্ষে কাজ করে তা দেখার জন্য দুটি পরীক্ষা করুন এবং তাদের সময় দিন।
পরীক্ষার সাথে আপডেট করুন:
যেহেতু আপনি জিজ্ঞাসা করেছেন যে কোনটি সবচেয়ে দ্রুততম আমি ityক্যতে প্রত্যেকটির 10000000 রূপান্তর চলমান একটি পরীক্ষা তৈরি করেছি। এটি প্রদর্শিত হয় যে প্রারম্ভিক সংস্করণ এই ক্ষেত্রে দ্রুততম। কিন্তু, আপনার নিজের প্রসঙ্গে যথাযথভাবে এমনটি ব্যবহার করা উচিত, সুতরাং আমি আপনাকে আপনার গেমটিতে নিজের পরীক্ষা চালানোর পরামর্শ দিই।
টেস্টকন্ট্র্টবাইওরেশন 10000000 উদাহরণ: 0.2714049 এস
টেস্টকনভার্টবাইকাস্টিং 10000000 উদাহরণ: 0.286027 সেকেন্ড
টেস্টকনভার্টবিআইনিটাইজিং 10000000 উদাহরণ: 0.1458781 এস
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;
}
}