الشبكة العربية لمطوري الألعاب

مبتدئ  SAID SAID مشاركة 1

السكربت موجود على coin ولكن لم افهم فيه هذا السطر
if (other.GetComponent<PlayerController>() == null)
            return;
ما المقصود ب   other.GetComponent<PlayerController>() == null
يعني ليه يساوي لا شئ لم افهمها
وكذلك ما الهدف من  return;
 
وكذلك عندي سؤال يحيرني ما الفرق بين كتابة if بي الجسم {} و if بدون الجسم كما في السكربت وما الفرق بينهم ارجو ان اجد من يشرح لي هذه الامور وجزاه الله خيرا




using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoinPickup : MonoBehaviour {

	public int pointToAdd;

	private void OnTriggerEnter2D(Collider2D other)
	{
		if (other.GetComponent<PlayerController>() == null)
			return;

		ScoreManager.AddPoints(pointToAdd);

		Destroy(gameObject);
	}
}

مبتدئ  احمد محمد ابوزريق مشاركة 2

اولا اذا كان الكود سطر واحد فقط بامكانك ان لا تكتب الاقواس {}

قد تقع في مشكلة اذا قررت ان تزيد سطرا اخر و نسيت ان تضيف الاقواس
لذلك من الافضل دائما ان تضيف الاقواس



  ()<other.GetComponent<PlayerController
سترجع null اذا لم يكن ال Component   موجودا على الكائن  other
استخدام  return; يعني التوقف عند هذه النقطة من الكود 
فبالتالي ما يفعله هذا الكود هو انه يتاكد اذا كان الكائن الذي اصطدم بالقطعة النقدية هو كائن عليه مكون ال PlayerController  و بالتالي هو اللاعب (لان الكائنات الاخرى لن تمتلك هذا المكون) و ان لم يكن (اي اذا كانت القيمة المرجعة هي null ) فالكود سيتوقف و لن ينفذ الاوامر الاخرى


ملاحظة:
اذا كان اللاعب عليه tag  او layer  يميزه عن الكائنات الاخرى فيمكن استخدامها للتعرف على اذا ما كان المصطدم هو اللاعب.


بالتوفيق :)

مبتدئ  SAID SAID مشاركة 3

شكرا لك اخي بارك الله فيك

مبتدئ  Mahdi مشاركة 4

null يعني فارغ
فهو يتأكد من الدالة الشرطية هل المكون هذا فارغ؟ اي هل يساوي لاشيء ؟

في الدوال الشرطية يمكنك عدم وضع علامتي الاقواس {} اذا كان جواب الشرط يتكون من سطر واحد فقط. مثل
if (true) return
لكن يجب عليك وضع الاكواد في اقواس اذا كان يتكون من اكثر من سطر واحد
if (true){
yes;
yes;
yes;
{
لانك هنا تخبر الكمبيوتر بان جميع الاوامر بين القوسين تتبع الدالة الشرطية

مبتدئ  SAID SAID مشاركة 5

شكرا لك اخي على الرد المفيد