Vector3 بنية Struct
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 22 من 67.
Vector3 هو struct، وهو نوع لم تتناوله رحلة C#. الـ struct قيمة، مثل int: إسنادها ينسخها بالكامل. بعد Vector3 b = a; b.x = 9;، لا تتغير a.x، لأن b نسخة منفصلة. (أما class فتعمل بطريقة مختلفة: يمكن لمتغيرين الإشارة إلى كائن واحد مشترك.)
transform.position خاصية، وقراءتها تمنحك نسخة من الموضع. لذا فإن transform.position.x = 0; سيغيّر نسخة يتم التخلص منها فورًا، ويرفض C# ترجمة ذلك: error CS1612: Cannot modify the return value of 'Transform.position' because it is not a variable. الحل هو نسخ الموضع، وتغيير النسخة، ثم إسنادها مجددًا. يعود هذا العداء إلى المسار الأوسط عند الضغط على Space:
if (Input.GetKeyDown(KeyCode.Space))
{
Vector3 p = transform.position; // انسخ
p.x = 0; // عدّل النسخة
transform.position = p; // أعد إسنادها
}إذا حذفت السطر الأخير، فسيُترجم الكود، لكن لن يتحرك شيء: الذي تغيّر هو النسخة فقط. تعمل transform.localScale وخصائص Vector3 الأخرى بالطريقة نفسها.
التحدي
سهلتهبط الزلاجة بمعدل fall وحدة في الثانية، وتحركها الأسهم على طول المحور x. من المفترض أن يُبقيها سطران على الأرض (ألا تقل y عن 0.5) وبين الجدارين (من -4 إلى 4 على المحور x)، لكن البرنامج النصي لا يُترجم.
اضغط على Play لرؤية الأخطاء. أصلح السطرين بالعمل على نسخة من الموضع، مع الإبقاء على ما يفعلانه، ثم اضغط على Check.
جرّب بنفسك
using UnityEngine;
public class Sled : MonoBehaviour
{
public float speed = 4f;
public float fall = 3f;
void Update()
{
float h = Input.GetAxisRaw("Horizontal");
transform.position += new Vector3(h * speed, -fall, 0) * Time.deltaTime;
// أبقِ الزلاجة على الأرض وبين الجدران.
transform.position.y = Mathf.Max(transform.position.y, 0.5f);
transform.position.x = Mathf.Clamp(transform.position.x, -4f, 4f);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب4المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي وفضاء العالمالسرعة القطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: طيار الطائرة المسيّرة5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر