لوضع مصفوفة من نوع GameObject


كود PHP:
var  arrayofgameobject  :  GameObject[] ; 

هنا عدد GameObject غير محدد




-----------------------------------------------------------------------------------------------------------------


ماذا لو اردنا وضع عدد لــــ GameObject


مثلا يكون 20 GameObject في مصفوفة arrayofgameobject


ملاحظه
(في المصفوفه يتم العد من الرقم صفر انظر => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 فيصبح المجموع 20 خانة)




لاضافة عدد 20 GameObject هذا السكربت سيعطيك خطأ


كود PHP:
var  arrayofgameobject  :  GameObject[19] ; 







لاضافة عدد 20 GameObject وهذا السكربت الصحيح


كود PHP:
var arrayofgameobject  GameObject[]= new  GameObject[19] ; 





الان قارن بين السكربت الصحيح والسكربت الخطأ






قبل ان ننطلق في شرحنااا
يجب ان تعرف كيف تحدد طول هذه المصفوفة واقصد عدد GameObject في مصفوفة arrayofgameobject


من خلال الامر التالي


كود PHP:
print(arrayofgameobject.Length

-----------------------------------------------------------------------------------------------------------------




الان كيف احدد GameObject معين في مصفوفة arrayofgameobject


يتم ذلك بتحدد الخانة لهذه GameObject


كود PHP:
arrayofgameobject [4



بعد ان حددنا GameObject في السكربت السابق ماذا بعد



صلو على النبي علشان نكمل


نريد مثلا استدعاء اسم هذا القيم GameObject وطباعة


فنكتب التالي


كود PHP:
print(arrayofgameobject[4].name); 



نريد ان نحدد مثلا موقعه وطياعتة


كود PHP:
print(howmany[0].transform.position); 



-----------------------------------------------------------------------------------------------------------------


الان نريد ان نحدد GameObject ونضعهم في مصفوفة باسم arrayofgameobject


عن طريق tag لهذا GameObject


نضع مربع ودائره واسطوانة ونغير التاج لهم ونجعله tag من نوع Player


الان نضع هذا السكربت


كود PHP:
var arrayofgameobject  GameObject[] ;
function 
Start () {arrayofgameobject  GameObject.FindGameObjectsWithTag("Player")  ;} 

الان ادخلناهم في المصفوفة




وماذا بعد


اذكرو الله اولا.... ثم نعود للشرح


مثلا نريد طباعة جميع اسماء GameObject في مصفوفة التي تحمل اسم nameofgameobject


نسختدم هذا السكربت


كود PHP:
for(var nameofgameobject GameObject in arrayofgameobject ){print(nameofgameobject.name);} 

هنا قمنا بتعريف متغير باسم nameofgameobject وحددنا نوعه وهو GameObject


وقلنا له ان هذا nameofgameobject يساوي GameObject الاول في مصفوفة arrayofgameobject


ولكن for سوفة تستمر بالدوران وتجل nameofgameobject يساوي GameObject الثاني في مصفوفة arrayofgameobject


وهكذا سيكون هنالك loop خلال الامر () for





الان سنرى طريقة اخرى ::::






او نستخدم هذا السكربت


كود PHP:
for(var =;arrayofgameobject.Length i++){print(arrayofgameobject[i].name);} 

الان قارن بين السكربتين










سيتم التحديث قريبااااااااااااااااااا والتفصيل اكثر رقم 1






لقد تعرفنا على طريقة اضافة GameObject باستخدام tag الي مصفوفة باسم arrayofgameobject


كود PHP:
var arrayofgameobject  GameObject[] ;
function 
Start () {arrayofgameobject  GameObject.FindGameObjectsWithTag("Player")  ;} 







الان سنتعرف على طريقة اخرى لاضافة GameObject الي مصفوفة باسم arrayofgameobject


سنحتاج الي تحديد عدد معين من الخانات هكذا
كود PHP:
var arrayofgameobject  GameObject[]= new  GameObject[19] ; 

بالتالي سينتج لنا 20 خانة فاضية تستوعب عدد 20 GameObject
ثم نقوم بملأ هذه الخانات بـــGameObject نحدده بعينة ويتم ذلك


طريقة تحديد GameObject بعينة يتم بهذا الكود .... بسحب الكائن وافلاته
كود PHP:
var anygameobject  :  GameObject 

او
بالبحث عن الكائن عن طريقة اسمه
كود PHP:
var anygameobject GameObject;anygameobject GameObject.Find("اسم الكائن"); 

الان استطعنا تحديد GameObject بالطريقتين السابقتين سوف ندخلة الي مصفوفة باسم arrayofgameobject


ويكون الكود كالتالي


كود PHP:
var  arrayofgameobject  :  GameObject[] = new GameObject[19]; ;var anygameobject  :  GameObject ;
function 
Start () {arrayofgameobject[4]=anygameobject ;} 

او


كود PHP:
var  arrayofgameobject  :  GameObject[] = new GameObject[19]; ;var anygameobject GameObject;anygameobject GameObject.Find("اسم الكائن");
function 
Start () {arrayofgameobject[4]=anygameobject ;} 



قارن بين الاثنين:::::: انتهيت من المقارنه صلي على النبي واذكر الله نرجع لدرسنااااااا


الان رئيتهم الية ادخال GameObject في الخانة رقم 4 .......


ملاحظه ( يمكن عمل ما ذكر سابقا بسحب GameObject وافلاته في الخانة رقم 4 مباشره )












سيتم التحديث قريبااااااااااااااااااا والتفصيل اكثر رقم 2




--------------------------------------------------------------------------------------------------------


الان سنطبق كل ما تعلمناه في سكربت واحد ..... سنصنع سكربت وضيفة


ان يقوم باللتقاط كل GameObject نحدده عليه بالفأره ونضغط على زر الماوس الايسر


فيتم ادخال هذا GameObject في مصفوفة لمرة واحد فقط ...........



بالبداية نحدد المصفوفة وعدد الخانات ونضي ايضا متغير لتحديد رقم الخانة ويكون هذا المتغير من نوع int


كود PHP:
var  arrayofgameobject  :  GameObject[] = new GameObject[19]; var numberofgameobjectinarray 0





الان نضع دالة function Update ونضع بداخلها شرط ...
اذا تم الضغط على الزر الايسر من الفاره Input.GetButtonDown ("Fire1") 0_0
سيتم استدعاء دالة إضافة GameObject للمصفوفه وهي باسم getgameobjectandPutinarray() 0_0


ويكون الكود كالتالي


كود PHP:
var  arrayofgameobject  :  GameObject[] = new GameObject[19]; var numberofgameobjectinarray 0; function Update() {if (Input.GetButtonDown ("Fire1")) { getgameobjectandPutinarray(); }  } 

الان نقوم بكتابة دالة getgameobjectandPutinarray المختصه في إضافة GameObject الي المصفوفة


كود PHP:
function getgameobjectandPutinarray() {
 } 



اولا نقوم بتحديد احداثي مؤشر الفارة واللذي يبتدي او ينطلق من الكاميرا بهذا الكود
بذلك نكون عرفنا متغير نوعة احداثي Vector3 .....( وضيفتة ان يقوم بتحديد موقع مؤشر الفاره بالنسبة للكاميرا )


كود PHP:
var ray Camera.main.ScreenPointToRay (Input.mousePosition); 

ثانيا نعرف متغير من نوع شعاع تصادمي ... (وضيفته ان يقوم بجلب المعلومات عن المجسمات التي اصتدمت به)
بهذا الكود
كود PHP:
  var hit RaycastHit



الان نضع شرط اذا اصتدم الشعاع بــGameObject يتم جلب هذا ال GameObject ووضعة في مصفوفة


نكتب الكود الشرط بهذه الطريقة
كود PHP:
  if (Physics.Raycast (rayhit)) 
ملاحظه (لوضع شعاع التصادم يتطلب منك ثلاث اوامر على الاقل
الاول تحديد مكان شعاع التصادم اللذي ينطلق منه والامر الثاني يطلب منك تحديد اتجاه انطلاقة وقد استخدمنا ray لذلك الامرين


واما الامر الثالث فهو يطلب منك طول هذا الشعاع وقد وضعنا او استخدمنا hit لذلك وهذا يعني انه طولة الي ماله نهاية وبدايته من الكاميرا المفعلة)



بذلك نحصل على الكود الابتدائيه بهذه الصوره


كود PHP:
function getgameobjectandPutinarray() {    var ray Camera.main.ScreenPointToRay (Input.mousePosition);   var hit RaycastHit;    if (Physics.Raycast (rayhit))        {        هنا سنع بعض الاوامر  لاضافة القيم اوبجكت لمره واحده فقط        
 } 



الان نكمل في اوامر اضافة الجيم اوبجكت عن اصتدامه بالشعاع وإضافة الي المصفوفة لمره واحده فقط


اولا قبل اضافة الجيم اوبجكت نحدد هل هو موجود في المصفوفة او لا


عن طريق عمل loop لاستعراض جميع الجيم اوبجكت في المصفوفة ومقارتنتها بالجيم اوبجكت اللذي اصتدم بالشعاع هل يساوي او لا


بهذا الكود


كود PHP:
              for(var 0;arrayofgameobject.length;i++)        {         if(hit.collider.gameObject == arrayofgameobject[i])          return;              } 

هنا الاحتمال الاول ::
ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
فاذا كان احد هذه الجيم اوبجكت يساويه
فانه الامر return سيوقف عمل loop والدالة بالكامل
ولن يتم قراة الدالة function getgameobjectandPutinarray بالكامل


هنا الاحتمال الثاني::
ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
فاذا كان احد هذه الجيم اوبجكت لا يساويه
فانه الامر return لن يعمل وسوف تستمر loop الي النهاية ثم سيتم قراءة الدالة function getgameobjectandPutinarray بالكامل






وهنا مربط الفرس اذا كان الاحتمال الثاني صحيح فاننا نضع هذا الامر لاضافة الجيم اوبجكت الي المصفوفة


كود PHP:
           arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject;           numberofgameobjectinarray++; 



الان نضع السكربت دالة function getgameobjectandPutinarray بالكامل


كود PHP:
function getgameobjectandPutinarray() {    var ray Camera.main.ScreenPointToRay (Input.mousePosition);   var hit RaycastHit;    if (Physics.Raycast (rayhit))        {              for(var 0;arrayofgameobject.length;i++)        {         if(hit.collider.gameObject == arrayofgameobject[i])          return;              }              arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject;           numberofgameobjectinarray ++;                             } 
 } 



والان نضيف السكربت بالكامل




كود PHP:
var  arrayofgameobject  :  GameObject[] = new GameObject[19]; var numberofgameobjectinarray 0; function Update() {if (Input.GetButtonDown ("Fire1")) { getgameobjectandPutinarray(); }  }

function 
getgameobjectandPutinarray() {    var ray Camera.main.ScreenPointToRay (Input.mousePosition);   var hit RaycastHit;    if (Physics.Raycast (rayhit))        {              for(var 0;arrayofgameobject.length;i++)        {         if(hit.collider.gameObject == arrayofgameobject[i])          return;              }              arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject;           numberofgameobjectinarray ++;                             } 
 } 





انتهى الدرس سيييي يووووو




وهذه اضافة لمن طبقو الدرس


كود PHP:
               if(numberofgameobjectinarray<arrayofgameobject.length-1)             
   
numberofgameobjectinarray ++;