مبارك الرشيدي
08-03-2013, 01:34 PM
لوضع مصفوفة من نوع GameObject
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 هذا السكربت سيعطيك خطأ
var arrayofgameobject : GameObject[19] ;
لاضافة عدد 20 GameObject وهذا السكربت الصحيح
var arrayofgameobject : GameObject[]= new GameObject[19] ;
الان قارن بين السكربت الصحيح والسكربت الخطأ
قبل ان ننطلق في شرحنااا
يجب ان تعرف كيف تحدد طول هذه المصفوفة واقصد عدد GameObject في مصفوفة arrayofgameobject
من خلال الامر التالي
print(arrayofgameobject.Length)
-----------------------------------------------------------------------------------------------------------------
الان كيف احدد GameObject معين في مصفوفة arrayofgameobject
يتم ذلك بتحدد الخانة لهذه GameObject
arrayofgameobject [4]
بعد ان حددنا GameObject في السكربت السابق ماذا بعد
صلو على النبي علشان نكمل
نريد مثلا استدعاء اسم هذا القيم GameObject وطباعة
فنكتب التالي
print(arrayofgameobject[4].name);
نريد ان نحدد مثلا موقعه وطياعتة
print(howmany[0].transform.position);
-----------------------------------------------------------------------------------------------------------------
الان نريد ان نحدد GameObject ونضعهم في مصفوفة باسم arrayofgameobject
عن طريق tag لهذا GameObject
نضع مربع ودائره واسطوانة ونغير التاج لهم ونجعله tag من نوع Player
الان نضع هذا السكربت
var arrayofgameobject : GameObject[] ;
function Start () {arrayofgameobject = GameObject.FindGameObjectsWithTag("Player") ;}
الان ادخلناهم في المصفوفة
وماذا بعد
اذكرو الله اولا.... ثم نعود للشرح
مثلا نريد طباعة جميع اسماء GameObject في مصفوفة التي تحمل اسم nameofgameobject
نسختدم هذا السكربت
for(var nameofgameobject : GameObject in arrayofgameobject ){print(nameofgameobject.name);}
هنا قمنا بتعريف متغير باسم nameofgameobject وحددنا نوعه وهو GameObject
وقلنا له ان هذا nameofgameobject يساوي GameObject الاول في مصفوفة arrayofgameobject
ولكن for سوفة تستمر بالدوران وتجل nameofgameobject يساوي GameObject الثاني في مصفوفة arrayofgameobject
وهكذا سيكون هنالك loop خلال الامر () for
الان سنرى طريقة اخرى ::::
او نستخدم هذا السكربت
for(var i =0 ;i < arrayofgameobject.Length ; i++){print(arrayofgameobject[i].name);}
الان قارن بين السكربتين
سيتم التحديث قريبااااااااااااااااااا والتفصيل اكثر رقم 1
لقد تعرفنا على طريقة اضافة GameObject باستخدام tag الي مصفوفة باسم arrayofgameobject
var arrayofgameobject : GameObject[] ;
function Start () {arrayofgameobject = GameObject.FindGameObjectsWithTag("Player") ;}
الان سنتعرف على طريقة اخرى لاضافة GameObject الي مصفوفة باسم arrayofgameobject
سنحتاج الي تحديد عدد معين من الخانات هكذا
var arrayofgameobject : GameObject[]= new GameObject[19] ;
بالتالي سينتج لنا 20 خانة فاضية تستوعب عدد 20 GameObject
ثم نقوم بملأ هذه الخانات بـــGameObject نحدده بعينة ويتم ذلك
طريقة تحديد GameObject بعينة يتم بهذا الكود .... بسحب الكائن وافلاته
var anygameobject : GameObject ;
او
بالبحث عن الكائن عن طريقة اسمه
var anygameobject : GameObject;anygameobject = GameObject.Find("اسم الكائن");
الان استطعنا تحديد GameObject بالطريقتين السابقتين سوف ندخلة الي مصفوفة باسم arrayofgameobject
ويكون الكود كالتالي
var arrayofgameobject : GameObject[] = new GameObject[19]; ;var anygameobject : GameObject ;
function Start () {arrayofgameobject[4]=anygameobject ;}
او
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
var arrayofgameobject : GameObject[] = new GameObject[19]; var numberofgameobjectinarray = 0;
الان نضع دالة function Update ونضع بداخلها شرط ...
اذا تم الضغط على الزر الايسر من الفاره Input.GetButtonDown ("Fire1") 0_0
سيتم استدعاء دالة إضافة GameObject للمصفوفه وهي باسم getgameobjectandPutinarray() 0_0
ويكون الكود كالتالي
var arrayofgameobject : GameObject[] = new GameObject[19]; var numberofgameobjectinarray = 0; function Update() {if (Input.GetButtonDown ("Fire1")) { getgameobjectandPutinarray(); } }
الان نقوم بكتابة دالة getgameobjectandPutinarray المختصه في إضافة GameObject الي المصفوفة
function getgameobjectandPutinarray() {
}
اولا نقوم بتحديد احداثي مؤشر الفارة واللذي يبتدي او ينطلق من الكاميرا بهذا الكود
بذلك نكون عرفنا متغير نوعة احداثي Vector3 .....( وضيفتة ان يقوم بتحديد موقع مؤشر الفاره بالنسبة للكاميرا )
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
ثانيا نعرف متغير من نوع شعاع تصادمي ... (وضيفته ان يقوم بجلب المعلومات عن المجسمات التي اصتدمت به)
بهذا الكود
var hit : RaycastHit;
الان نضع شرط اذا اصتدم الشعاع بــGameObject يتم جلب هذا ال GameObject ووضعة في مصفوفة
نكتب الكود الشرط بهذه الطريقة
if (Physics.Raycast (ray, hit))
ملاحظه (لوضع شعاع التصادم يتطلب منك ثلاث اوامر على الاقل
الاول تحديد مكان شعاع التصادم اللذي ينطلق منه والامر الثاني يطلب منك تحديد اتجاه انطلاقة وقد استخدمنا ray لذلك الامرين
واما الامر الثالث فهو يطلب منك طول هذا الشعاع وقد وضعنا او استخدمنا hit لذلك وهذا يعني انه طولة الي ماله نهاية وبدايته من الكاميرا المفعلة)
بذلك نحصل على الكود الابتدائيه بهذه الصوره
function getgameobjectandPutinarray() { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hit : RaycastHit; if (Physics.Raycast (ray, hit)) { هنا سنع بعض الاوامر لاضافة القيم اوبجكت لمره واحده فقط {
}
الان نكمل في اوامر اضافة الجيم اوبجكت عن اصتدامه بالشعاع وإضافة الي المصفوفة لمره واحده فقط
اولا قبل اضافة الجيم اوبجكت نحدد هل هو موجود في المصفوفة او لا
عن طريق عمل loop لاستعراض جميع الجيم اوبجكت في المصفوفة ومقارتنتها بالجيم اوبجكت اللذي اصتدم بالشعاع هل يساوي او لا
بهذا الكود
for(var i = 0;i < arrayofgameobject.length;i++) { if(hit.collider.gameObject == arrayofgameobject[i]) return; }
هنا الاحتمال الاول ::
ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
فاذا كان احد هذه الجيم اوبجكت يساويه
فانه الامر return سيوقف عمل loop والدالة بالكامل
ولن يتم قراة الدالة function getgameobjectandPutinarray بالكامل
هنا الاحتمال الثاني::
ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
فاذا كان احد هذه الجيم اوبجكت لا يساويه
فانه الامر return لن يعمل وسوف تستمر loop الي النهاية ثم سيتم قراءة الدالة function getgameobjectandPutinarray بالكامل
وهنا مربط الفرس اذا كان الاحتمال الثاني صحيح فاننا نضع هذا الامر لاضافة الجيم اوبجكت الي المصفوفة
arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject; numberofgameobjectinarray++;
الان نضع السكربت دالة function getgameobjectandPutinarray بالكامل
function getgameobjectandPutinarray() { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hit : RaycastHit; if (Physics.Raycast (ray, hit)) { for(var i = 0;i < arrayofgameobject.length;i++) { if(hit.collider.gameObject == arrayofgameobject[i]) return; } arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject; numberofgameobjectinarray ++; }
}
والان نضيف السكربت بالكامل
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 (ray, hit)) { for(var i = 0;i < arrayofgameobject.length;i++) { if(hit.collider.gameObject == arrayofgameobject[i]) return; } arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject; numberofgameobjectinarray ++; }
}
انتهى الدرس سيييي يووووو
وهذه اضافة لمن طبقو الدرس
if(numberofgameobjectinarray<arrayofgameobject.length-1)
numberofgameobjectinarray ++;
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 هذا السكربت سيعطيك خطأ
var arrayofgameobject : GameObject[19] ;
لاضافة عدد 20 GameObject وهذا السكربت الصحيح
var arrayofgameobject : GameObject[]= new GameObject[19] ;
الان قارن بين السكربت الصحيح والسكربت الخطأ
قبل ان ننطلق في شرحنااا
يجب ان تعرف كيف تحدد طول هذه المصفوفة واقصد عدد GameObject في مصفوفة arrayofgameobject
من خلال الامر التالي
print(arrayofgameobject.Length)
-----------------------------------------------------------------------------------------------------------------
الان كيف احدد GameObject معين في مصفوفة arrayofgameobject
يتم ذلك بتحدد الخانة لهذه GameObject
arrayofgameobject [4]
بعد ان حددنا GameObject في السكربت السابق ماذا بعد
صلو على النبي علشان نكمل
نريد مثلا استدعاء اسم هذا القيم GameObject وطباعة
فنكتب التالي
print(arrayofgameobject[4].name);
نريد ان نحدد مثلا موقعه وطياعتة
print(howmany[0].transform.position);
-----------------------------------------------------------------------------------------------------------------
الان نريد ان نحدد GameObject ونضعهم في مصفوفة باسم arrayofgameobject
عن طريق tag لهذا GameObject
نضع مربع ودائره واسطوانة ونغير التاج لهم ونجعله tag من نوع Player
الان نضع هذا السكربت
var arrayofgameobject : GameObject[] ;
function Start () {arrayofgameobject = GameObject.FindGameObjectsWithTag("Player") ;}
الان ادخلناهم في المصفوفة
وماذا بعد
اذكرو الله اولا.... ثم نعود للشرح
مثلا نريد طباعة جميع اسماء GameObject في مصفوفة التي تحمل اسم nameofgameobject
نسختدم هذا السكربت
for(var nameofgameobject : GameObject in arrayofgameobject ){print(nameofgameobject.name);}
هنا قمنا بتعريف متغير باسم nameofgameobject وحددنا نوعه وهو GameObject
وقلنا له ان هذا nameofgameobject يساوي GameObject الاول في مصفوفة arrayofgameobject
ولكن for سوفة تستمر بالدوران وتجل nameofgameobject يساوي GameObject الثاني في مصفوفة arrayofgameobject
وهكذا سيكون هنالك loop خلال الامر () for
الان سنرى طريقة اخرى ::::
او نستخدم هذا السكربت
for(var i =0 ;i < arrayofgameobject.Length ; i++){print(arrayofgameobject[i].name);}
الان قارن بين السكربتين
سيتم التحديث قريبااااااااااااااااااا والتفصيل اكثر رقم 1
لقد تعرفنا على طريقة اضافة GameObject باستخدام tag الي مصفوفة باسم arrayofgameobject
var arrayofgameobject : GameObject[] ;
function Start () {arrayofgameobject = GameObject.FindGameObjectsWithTag("Player") ;}
الان سنتعرف على طريقة اخرى لاضافة GameObject الي مصفوفة باسم arrayofgameobject
سنحتاج الي تحديد عدد معين من الخانات هكذا
var arrayofgameobject : GameObject[]= new GameObject[19] ;
بالتالي سينتج لنا 20 خانة فاضية تستوعب عدد 20 GameObject
ثم نقوم بملأ هذه الخانات بـــGameObject نحدده بعينة ويتم ذلك
طريقة تحديد GameObject بعينة يتم بهذا الكود .... بسحب الكائن وافلاته
var anygameobject : GameObject ;
او
بالبحث عن الكائن عن طريقة اسمه
var anygameobject : GameObject;anygameobject = GameObject.Find("اسم الكائن");
الان استطعنا تحديد GameObject بالطريقتين السابقتين سوف ندخلة الي مصفوفة باسم arrayofgameobject
ويكون الكود كالتالي
var arrayofgameobject : GameObject[] = new GameObject[19]; ;var anygameobject : GameObject ;
function Start () {arrayofgameobject[4]=anygameobject ;}
او
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
var arrayofgameobject : GameObject[] = new GameObject[19]; var numberofgameobjectinarray = 0;
الان نضع دالة function Update ونضع بداخلها شرط ...
اذا تم الضغط على الزر الايسر من الفاره Input.GetButtonDown ("Fire1") 0_0
سيتم استدعاء دالة إضافة GameObject للمصفوفه وهي باسم getgameobjectandPutinarray() 0_0
ويكون الكود كالتالي
var arrayofgameobject : GameObject[] = new GameObject[19]; var numberofgameobjectinarray = 0; function Update() {if (Input.GetButtonDown ("Fire1")) { getgameobjectandPutinarray(); } }
الان نقوم بكتابة دالة getgameobjectandPutinarray المختصه في إضافة GameObject الي المصفوفة
function getgameobjectandPutinarray() {
}
اولا نقوم بتحديد احداثي مؤشر الفارة واللذي يبتدي او ينطلق من الكاميرا بهذا الكود
بذلك نكون عرفنا متغير نوعة احداثي Vector3 .....( وضيفتة ان يقوم بتحديد موقع مؤشر الفاره بالنسبة للكاميرا )
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
ثانيا نعرف متغير من نوع شعاع تصادمي ... (وضيفته ان يقوم بجلب المعلومات عن المجسمات التي اصتدمت به)
بهذا الكود
var hit : RaycastHit;
الان نضع شرط اذا اصتدم الشعاع بــGameObject يتم جلب هذا ال GameObject ووضعة في مصفوفة
نكتب الكود الشرط بهذه الطريقة
if (Physics.Raycast (ray, hit))
ملاحظه (لوضع شعاع التصادم يتطلب منك ثلاث اوامر على الاقل
الاول تحديد مكان شعاع التصادم اللذي ينطلق منه والامر الثاني يطلب منك تحديد اتجاه انطلاقة وقد استخدمنا ray لذلك الامرين
واما الامر الثالث فهو يطلب منك طول هذا الشعاع وقد وضعنا او استخدمنا hit لذلك وهذا يعني انه طولة الي ماله نهاية وبدايته من الكاميرا المفعلة)
بذلك نحصل على الكود الابتدائيه بهذه الصوره
function getgameobjectandPutinarray() { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hit : RaycastHit; if (Physics.Raycast (ray, hit)) { هنا سنع بعض الاوامر لاضافة القيم اوبجكت لمره واحده فقط {
}
الان نكمل في اوامر اضافة الجيم اوبجكت عن اصتدامه بالشعاع وإضافة الي المصفوفة لمره واحده فقط
اولا قبل اضافة الجيم اوبجكت نحدد هل هو موجود في المصفوفة او لا
عن طريق عمل loop لاستعراض جميع الجيم اوبجكت في المصفوفة ومقارتنتها بالجيم اوبجكت اللذي اصتدم بالشعاع هل يساوي او لا
بهذا الكود
for(var i = 0;i < arrayofgameobject.length;i++) { if(hit.collider.gameObject == arrayofgameobject[i]) return; }
هنا الاحتمال الاول ::
ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
فاذا كان احد هذه الجيم اوبجكت يساويه
فانه الامر return سيوقف عمل loop والدالة بالكامل
ولن يتم قراة الدالة function getgameobjectandPutinarray بالكامل
هنا الاحتمال الثاني::
ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
فاذا كان احد هذه الجيم اوبجكت لا يساويه
فانه الامر return لن يعمل وسوف تستمر loop الي النهاية ثم سيتم قراءة الدالة function getgameobjectandPutinarray بالكامل
وهنا مربط الفرس اذا كان الاحتمال الثاني صحيح فاننا نضع هذا الامر لاضافة الجيم اوبجكت الي المصفوفة
arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject; numberofgameobjectinarray++;
الان نضع السكربت دالة function getgameobjectandPutinarray بالكامل
function getgameobjectandPutinarray() { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hit : RaycastHit; if (Physics.Raycast (ray, hit)) { for(var i = 0;i < arrayofgameobject.length;i++) { if(hit.collider.gameObject == arrayofgameobject[i]) return; } arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject; numberofgameobjectinarray ++; }
}
والان نضيف السكربت بالكامل
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 (ray, hit)) { for(var i = 0;i < arrayofgameobject.length;i++) { if(hit.collider.gameObject == arrayofgameobject[i]) return; } arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject; numberofgameobjectinarray ++; }
}
انتهى الدرس سيييي يووووو
وهذه اضافة لمن طبقو الدرس
if(numberofgameobjectinarray<arrayofgameobject.length-1)
numberofgameobjectinarray ++;