الصور الرمزية الديناميكية في الوحدة
() translation by (you can also view the original English article)
في هذا البرنامج التعليمي ، سأوضح لك كيفية إنشاء قائمة تخصيص شخصية بسيطة ، وكيفية حفظ البيانات الضرورية للاستخدام في اللعبة. سنقوم بإنشاء صورة شخصية للاعب (طائرة في هذا المثال) ، وتخصيصها عن طريق إضافة مرفقات اختيارية أو تغيير اللون ، وحفظ البيانات ، وتحميل مستوى آخر ، وإعادة إنشائها من البيانات المحفوظة. وهذا فعال يسمح لك لتخصيص أنه خارج اللعبة في العالم؛ في نظام قائمة، حيث أنها متوفرة في أي مكان تريده، حتى بعد إنهاء وإعادة تشغيل اللعبة.
سوف تحتاج إلى فهم أساسي للوحدة لهذا. إذا كنت تريد نموذج الكائنات الخاصة بك، يمكنك القيام بذلك أيضا، ولكن 3d-نموذج المستخدمة في هذا البرنامج التعليمي أيضا متاحة للتحميل هنا. المشروع بأكمله، في حال كنت تريد أن ننظر بشيء، ويمكن أيضا تحميل هنا.
إعداد المشروع
قم بإنشاء مشروع جديد وحدة. سنحتاج إلى مستويات 2 هناك، حيث أننا يمكن التبديل بينهما. حفظ المشهد الحالي وتسميته 'ليفيلمينو'. ثم افتح إعدادات الإنشاء (إعدادات إنشاء الملفات) واضغط 'إضافة المشهد الحالي'. وهذا ضروري حتى نتمكن من الوصول إليه لاحقًا وتحميله مباشرة.
ثم أنشئ مشهدًا جديدًا واسمه 'levelGame' ، وأضفه إلى إعدادات الإنشاء أيضًا. الآن يجب أن تكون المشاهد الأساسية موجودة ، مما يسمح لنا بملئها بالأشياء.



إنشاء الطائرة
سنستخدم طائرة 'كحرف' في الوقت الحالي (هذا أسهل بكثير من التعامل مع إنسان كامل :). احصل على الأصول ثلاثية الأبعاد (هنا مرة أخرى) وقم بنسخها في مجلد الأصول لديك. قم بإنشاء مكعب ، وقم بمبادلة الشبكة لشبكة الطائرة. قم بإنشاء مادة جديدة وأضفها إلى الطائرة. وأخيرًا ، اسحب الطائرة إلى مجلد المشروع لإخراجها مسبقًا.
الصورة الرمزية التخصيص واجهة المستخدم الرسومية
من أجل تخصيص الطائرة سوف نحتاج نوعا من واجهة.
إنشاء نصوص برمجية جديدة وتسمية it plane.js. ضع التعليمة البرمجية التالية في ذلك
1 |
function OnGUI() |
2 |
{
|
3 |
if(Application.loadedLevel == 0) |
4 |
{
|
5 |
if(GUI.Button(Rect(10, 10, 100, 50), "Red")) |
6 |
{
|
7 |
renderer.material.color = Color.red; |
8 |
}
|
9 |
|
10 |
if(GUI.Button(Rect(10, 70, 100, 50), "Blue")) |
11 |
{
|
12 |
renderer.material.color = Color.blue; |
13 |
}
|
14 |
|
15 |
if(GUI.Button(Rect(10, 130, 100, 50), "Green")) |
16 |
{
|
17 |
renderer.material.color = Color.green; |
18 |
}
|
19 |
}
|
20 |
}
|
إضافة البرنامج النصي إلى الطائرة-الجاهزة، ووضع طائرة في مكان الحادث. نقل الكاميرا بحيث يبدو في الطائرة، حتى يمكننا أن نرى التغييرات التي سنقوم بها. عندما تقوم بتشغيل، إذا كان يجب أن تبدو مثل هذا:



إذا قمت بالضغط على زر، وينبغي تغيير لون الطائرة. يمكنك محاولة الخروج في هذا البناء: تحميل المصدر المشروع 1.
إذا تم تعطيل (Application.loadedLevel == 0) -bracket الزر إذا تم تحميل مستوى آخر باستثناء القائمة (المستوى 0). هذا مفيد لإدارة أنظمة واجهة المستخدم الرسومية.
تحميل المستوى التالي
في الخاص بك 'ليفيلجامي'، وضع طائرة أخرى، وجعل الكاميرا ننظر في الأمر. إذا كنت تحاول ذلك، ينبغي أن يحدث أي شيء حتى الآن، كما أننا لم تقم بإضافة تكييف للبيانات المحفوظة حتى الآن. أثناء وجودك في هذا المكان ، اجعل المشهد مختلفًا عن المشهد 'levelMenu' ، بحيث يكون من السهل التمييز بينهما. يجب أن يكفي إعطاء لون خلفية مختلف في الكاميرا الرئيسية.
الآن أعود إلى مستوى 'levelMenu' ، وسوف يتم كل شيء من هناك. افتح البرنامج النصي للطائرة وأضف السطور التالية إليه ، أسفل رمز الأزرار مباشرةً:
1 |
function OnGUI() |
2 |
{
|
3 |
if(GUI.Button(Rect(120, 10, 100, 50), "Load Level")) |
4 |
{
|
5 |
Application.LoadLevel(1); |
6 |
}
|
7 |
}
|
جربة! يجب أن يظهر زر جديد، وإذا تم الضغط عليه، فإنه سيتم تحميل مستوى جديد. الطائرة في الرتب الأخرى سوف يكون مظهر 'الأساسية' على الرغم. سوف تكون الخطوة التالية لتكييفه بمجرد تم تحميل المستوى.
حفظ بيانات الصورة الرمزية
الوحدة يأتي مع 'بلاييربريفس'--مهام. تسمح هذه لحفظ وتحميل البيانات على أي جهاز يتم استخدامه. أولاً عليك حفظ لون الطائرة وثم انظر حول إعادة إنشاء فإنه على مستوى ثاني تحميل.
التكيف مع المستوى زر التحميل لتبدو مثل هذا:
1 |
if(GUI.Button(Rect(120, 10, 100, 50), "Load Level")) |
2 |
{
|
3 |
PlayerPrefs.SetFloat("planeColorR", renderer.material.color.r); |
4 |
PlayerPrefs.SetFloat("planeColorG", renderer.material.color.g); |
5 |
PlayerPrefs.SetFloat("planeColorB", renderer.material.color.b); |
6 |
|
7 |
Application.LoadLevel(1); |
8 |
}
|
عند النقر فوق 'مستوى التحميل'--زر، اللعبة سيتم الآن حفظ الأحمر والأخضر والأزرق-مكونات الألوان كثلاث قيم منفصلة. سيتم حفظ الأحمر ك 'بلانيكولور' وسيتم حفظ الأخضر ك 'بلانيكولورج' والأزرق هو حفظ ك 'بلانيكولورب'. يتم حفظ هذه القيم خارج اللعبة على الكمبيوتر (أو أي جهاز سيتم تشغيله ، مثل جهاز iOS أو Android أو Ouya) ، ويمكن استرداده في أي وقت وفي أي وقت.
تكييف بس اللاعب إلى البيانات المحفوظة
عدم إضافة هذه التعليمة البرمجية إلى البرنامج النصي:
1 |
function Start() |
2 |
{
|
3 |
renderer.material.color.r = PlayerPrefs.GetFloat("planeColorR"); |
4 |
renderer.material.color.g = PlayerPrefs.GetFloat("planeColorG"); |
5 |
renderer.material.color.b = PlayerPrefs.GetFloat("planeColorB"); |
6 |
}
|
عندما يتم تشغيل المستوى، أن الطائرة سوف الحصول على اللون-البيانات المحفوظة، وتطبيقها على الطائرة. إذا كان يمكنك محاولة الخروج الآن، ويبدو أسود، وهذا لأنه تم حفظ أية بيانات حتى الآن! ولمنع حدوث ذلك، يمكنك تعيين لتكييف فقط في المستوى الثاني:
1 |
if(Application.loadedLevel == 1) |
2 |
{
|
3 |
PlayerPrefs.SetFloat("planeColorR", renderer.material.color.r); |
4 |
PlayerPrefs.SetFloat("planeColorG", renderer.material.color.g); |
5 |
PlayerPrefs.SetFloat("planeColorB", renderer.material.color.b); |
1 |
}
|
اكسسوارات
دعونا نفعل بعض الأشياء الأخرى لتخصيص الطائرة! في 3d--الملفات سوف تجد أيضا بعض القنابل. ونحن سوف تجعل حتى تلك التي يمكن أن تضع تحت الطائرة وحفظها أيضا.
تبدأ من خلال إنشاء كائن قنبلة. اصنع مكعبًا وقم بتبديل الشبكة لشبكة القنبلة. أضف لونًا رماديًا ، ثم أصل الصاروخ إلى الطائرة وركزه أسفله. يجب أن تبدو هذه:



إذا قمت بالضغط على 'تطبيق' أثناء وجود الطائرة في المفتش ، ستتم إضافة القنابل الجديدة إلى الموقع الجاهز ، وسيتم تحديث الطائرة في المستوى 'levelGame' تلقائيًا أيضًا.
الآن إضافة هذه الخطوط إلى البرنامج النصي:
1 |
var bombs: GameObject; |
2 |
function Start() |
3 |
{
|
4 |
bombs.SetActive(false); |
5 |
if(PlayerPrefs.GetInt("bombs") == 1) |
6 |
bombs.SetActive(true); |
7 |
}
|
8 |
function OnGUI() |
9 |
{
|
10 |
if(GUI.Button(Rect(10, 190, 100, 50), "Bombs")) |
11 |
{ |
12 |
bombs.SetActive(!bombs.activeSelf); |
13 |
} |
14 |
}
|
15 |
function LoadLevel() |
16 |
{
|
17 |
if(bombs.ActiveSelf()) |
18 |
{
|
19 |
PlayerPrefs.SetInt("planeBombs", 1); |
20 |
} |
21 |
else |
22 |
{ |
23 |
PlayerPrefs.SetInt("planeBombs", 0); |
24 |
} |
25 |
}
|
قبل أن تحاول ذلك، تذكر أن اسحب فتحه 'قنبلة'-الكائن في موقع الحادث إلى 'قنابل'-في الطائرة، وإلا فإنه لن يعمل.



كامل البرنامج النصي يجب أن تبدو مثل هذا:
1 |
#pragma strict |
2 |
|
3 |
var bombs: GameObject; |
4 |
|
5 |
function Start() |
6 |
{
|
7 |
if(Application.loadedLevel == 1) |
8 |
{ |
9 |
renderer.material.color.r = PlayerPrefs.GetFloat("planeColorR"); |
10 |
renderer.material.color.g = PlayerPrefs.GetFloat("planeColorG"); |
11 |
renderer.material.color.b = PlayerPrefs.GetFloat("planeColorB"); |
12 |
} |
13 |
|
14 |
bombs.SetActive(false); |
15 |
if(PlayerPrefs.GetInt("planeBombs") == 1) |
16 |
{ |
17 |
bombs.SetActive(true); |
18 |
} |
19 |
}
|
20 |
|
21 |
function OnGUI() |
22 |
{
|
23 |
if(Application.loadedLevel == 0) |
24 |
{ |
25 |
if(GUI.Button(Rect(10, 10, 100, 50), "Red")) |
26 |
{ |
27 |
renderer.material.color = Color.red; |
28 |
} |
29 |
|
30 |
if(GUI.Button(Rect(10, 70, 100, 50), "Blue")) |
31 |
{ |
32 |
renderer.material.color = Color.blue; |
33 |
} |
34 |
|
35 |
if(GUI.Button(Rect(10, 130, 100, 50), "Green")) |
36 |
{ |
37 |
renderer.material.color = Color.green; |
38 |
} |
39 |
|
40 |
if(GUI.Button(Rect(10, 190, 100, 50), "Bombs")) |
41 |
{ |
42 |
bombs.SetActive(!bombs.activeSelf); |
43 |
} |
44 |
|
45 |
if(GUI.Button(Rect(120, 10, 100, 50), "Load Level")) |
46 |
{ |
47 |
PlayerPrefs.SetFloat("planeColorR", renderer.material.color.r); |
48 |
PlayerPrefs.SetFloat("planeColorG", renderer.material.color.g); |
49 |
PlayerPrefs.SetFloat("planeColorB", renderer.material.color.b); |
50 |
|
51 |
if(bombs.activeSelf) |
52 |
{ |
53 |
PlayerPrefs.SetInt("planeBombs", 1); |
54 |
} |
55 |
else |
56 |
{ |
57 |
PlayerPrefs.SetInt("planeBombs", 0); |
58 |
} |
59 |
|
60 |
Application.LoadLevel(1); |
61 |
} |
62 |
} |
63 |
else |
64 |
{ |
65 |
if(GUI.Button(Rect(10, 10, 100, 50), "Load Menu")) |
66 |
{ |
67 |
Application.LoadLevel(0); |
68 |
} |
69 |
} |
70 |
}
|
عندما تضغط على زر 'مستوى التحميل' - الآن ، يتم حفظ حالة القنابل. عند بدء المستوى الجديد ، يتم إما تنشيط أو تنشيط القنابل ، حسب الحالة المحفوظة. يمكنك تجربتها في هذا الإصدار: DOWNLOAD SOURCE PROJECT 2.
استنتاج
لقد انتهينا! الآن أنت تعرف كيف
- تخصيص 'حرف'
- احفظ البيانات على أي جهاز يتم تشغيل اللعبة عليه
- إعادة إنشاء الحرف مع البيانات المحفوظة
هذا اللاعب 'شخصية' مخصصة سوف تكون متاحة في أي وقت خلال اللعبة.
لقد استخدمنا فقط طائرة بسيطة كمثالنا 'الشخصية' ، ولكن يمكن أن يكون أي شيء. يمكن استخدام القوارب أو السيارات أو البشر أو الحيوانات أو حتى الأشياء البسيطة ، مثل المكعبات أو الكرات ، لتمثيل اللاعبين في ألعابك. ويمكن استخدام هذا أيضًا لتخصيص عناصر أخرى ، مثل الأسلحة ، والمركبات ، والعرفات ، وأنماط الشعر أو حتى الانحطاط في منزل دائم واسع. الذهاب البرية!