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

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

السلام عليكم


انا اتوه قليلا في false و  true  واختلطت علي بعض الامور و ارجو تفسيرها وشكرا جزيلا


اذا اعطيت متغير قيمة bool isGrounded=false; في البداية


في Update

   
if (!isGrounded)
		{
			
			speed *= -1;
		}


فماذا سوف تكون نتيجة (!isGrounded) هل هي false او true


واذا لم اعطي متغير اي قيمة في البداية bool isGrounded; 

 (!isGrounded)فماذا سوف تكون نتيجة 


وشكرا جزيلا على المساعدة

مبتدئ  mohamed samir مشاركة 2

في 07 سبتمبر 2017 01:51 م، قال SAID SAID بهدوء وتؤدة:

bool isGrounded=false

إذا أعطيت المتغير isGrounded القيمة false في البداية (بداية function/دالة) فسوف تكون قيمته false عند تشغيل هذا الكود و سيقوم البرنامج بتنفيذ السطر:speed *= -1;
أما إذا لم تعطي قيمة في البداية (بدابة function/دالة) للمتغير isGrounded فستظهر رسالة خطأ "use of unassigned local variable 'isGrounded'" تمنعك من عمل compile للبرنامج.
أما إذا لم تعط المتغير isGrounded قيمة في البداية (بداية class) فسيقوم الـ default constructor الخاص بالـ class بتعريف المتغير isGrounded في الحالة الإفتراضية و هي false
كما هو موضح في هذا الجدول https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/default-values-table
و سيقوم البرنامج أيضا بتنفيذ السطر speed *= -1;


أتمنى أن يكون ردي ساعدك.

3D-Artist/Programmer
http://www.youtube.com/watch?v=DvHvsfrQGyc
http://www.youtube.com/watch?v=PBSeyo9WHwM

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

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

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

شكرا لك اخي على الرد لكن مازلت حائر في هذا الامر حسب الصورة فخارج false  اذا كانت علامة ! فسوف يكون العكس وهي true وكذلك خارج  true اذا كانت علامة ! فسوف يكون العكس وهي false 



مبتدئ  mohamed samir مشاركة 5

هذا الجدول يا أخي يشرح ناتج العمليات عند استخدام أحد المشغلات المنطقية && أو || أو !
و قبل أن نقوم بتطبيق ما في هذا الجدول على المثال الخاص بك يجب أن تعرف شيئا
عند كتابة:
if(isGrounded)
فهذا بالضبط مساوى لكتابة:
if(isGrounded == true)
وهو معناه "هل هذا المتغير مفعل ؟"
أما عند كتابة:
if(!isGrounded)
فذا بالضبط مساوي لكتابة:
if(isGrounded == false)
فهذا معناه "هل هذا المتغير غير مفعل ؟" ووظيفة المشغل ! هي عكس قيمة ما بعده.

3D-Artist/Programmer
http://www.youtube.com/watch?v=DvHvsfrQGyc
http://www.youtube.com/watch?v=PBSeyo9WHwM

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

شكرا لك اخي على التوضيح -- عندما اضع في او الكلاس public bool isGrounded=false; او public bool isGrounded=true; تغيير false بtrue
وفي 
 FixedUpdate 


if (!isGrounded)
{

speed *= -1;

}


يشتغل البرنامج جيدا و انمي يعمل جيدا 


لكن البرناج لا يشتغل عندما ازيل علامة ! من if (!isGrounded) فما هو سبب ----- 


ارجو ان لا اكون قد ازعجتك باسألتي اخي وشكرا لك