الأخوة الكرام
السلام عليكم
لاني بفضل الله تعالى مهندس معماري، و احببت ان أقدم اعمالي بطريقة Realtime Visualization احببت العمل في بيئة
Unity 3D ... ولاني لست خبيرا بلغة الجافا واجهتني مشكلة في اتمام مشروعي...
وهذه هي مشكلتي ... على الاقل في هذه المرحلة:
لدي مشهد في اليونتي يحتوي 3 أجسام و ازرار نوع GUI button ... كل زر button مسؤول عن تغيير خامة.
بودي ان احصل على سكربت استطيع من خلاله تغيير خامة اي من هذه الاجسام وبالخطوات التالية:
1- اعمل كلك بالماوس على اي من الاجسام الثلاث لاختياره
2- عمل كلك بالماوس على الأزرار لتغيير خامة الجسم الذي تم اختياره في 1.
3- هذه الخطوات ممكن تكرارها على بقية الاجسام لاختيار الخامة المطلوبة
هذا الموضوع طرحته في المنابر منذ شهور... والاخ Unity3d مشكورا وضع كود لجسم واحد فقط،
انظر الرابط
http://www.maxforums.net/showthread.php?t=208862
وهذا هو الكود
var button1_tex : Texture;
var button2_tex : Texture;
var button3_tex : Texture;
var crate_tex1 : Texture;
var crate_tex2 : Texture;
var crate_tex3 : Texture;
function OnGUI ( ) {
if ( GUI.Button (Rect (400,300,80,40),button1_tex) )
renderer.material.mainTexture = crate_tex1;
else
if ( GUI.Button (Rect (300,300,80,40), button2_tex) )
renderer.material.mainTexture = crate_tex2;
else
if ( GUI.Button (Rect (200,300,80,40), button3_tex) )
renderer.material.mainTexture = crate_tex3;
}
يحثت عن حل لتحقيق فكرتي وزرت بعض المنتديات الاجنبية
ووجدت من اقترح هذا الكود
function OnGUI()
{
if(_mouseClick)
{
if (GUI.Button (Rect (100,570,40,40), "Button 1") )
{
Debug.Log("Texture 1 should come up");
renderer.material.mainTexture = crate_tex1;
_mouseClick = false; //This part of the code hides the buttons away
}
if (GUI.Button (Rect (175,570,40,40), "Button 2") )
{
Debug.Log("Texture 2 should come up");
renderer.material.mainTexture = crate_tex2;
_mouseClick = false; //This part of the code hides the buttons away
}
}
}
عيب هذا الكود:
1- ان عمل كلك على اي من الازرار لتغيير االخامة فان جميع الازرار تختفي ولا استطيع تجربة خامة اخرى على نفس الجسم
2- لا تظهر الازرار مجددا الا بعد عمل كلك على اي من الاجسام
أخيرا...
أتمنى ان أجد الحل لديكم... هل من طريقة لتعديل وتحسين هذا الكود... او فكرة اخرى لحل المشكلة؟
ولكم الشكر
السلام عليكم
لاني بفضل الله تعالى مهندس معماري، و احببت ان أقدم اعمالي بطريقة Realtime Visualization احببت العمل في بيئة
Unity 3D ... ولاني لست خبيرا بلغة الجافا واجهتني مشكلة في اتمام مشروعي...
وهذه هي مشكلتي ... على الاقل في هذه المرحلة:
لدي مشهد في اليونتي يحتوي 3 أجسام و ازرار نوع GUI button ... كل زر button مسؤول عن تغيير خامة.
بودي ان احصل على سكربت استطيع من خلاله تغيير خامة اي من هذه الاجسام وبالخطوات التالية:
1- اعمل كلك بالماوس على اي من الاجسام الثلاث لاختياره
2- عمل كلك بالماوس على الأزرار لتغيير خامة الجسم الذي تم اختياره في 1.
3- هذه الخطوات ممكن تكرارها على بقية الاجسام لاختيار الخامة المطلوبة
هذا الموضوع طرحته في المنابر منذ شهور... والاخ Unity3d مشكورا وضع كود لجسم واحد فقط،
انظر الرابط
http://www.maxforums.net/showthread.php?t=208862
وهذا هو الكود
var button1_tex : Texture;
var button2_tex : Texture;
var button3_tex : Texture;
var crate_tex1 : Texture;
var crate_tex2 : Texture;
var crate_tex3 : Texture;
function OnGUI ( ) {
if ( GUI.Button (Rect (400,300,80,40),button1_tex) )
renderer.material.mainTexture = crate_tex1;
else
if ( GUI.Button (Rect (300,300,80,40), button2_tex) )
renderer.material.mainTexture = crate_tex2;
else
if ( GUI.Button (Rect (200,300,80,40), button3_tex) )
renderer.material.mainTexture = crate_tex3;
}
يحثت عن حل لتحقيق فكرتي وزرت بعض المنتديات الاجنبية
ووجدت من اقترح هذا الكود
function OnGUI()
{
if(_mouseClick)
{
if (GUI.Button (Rect (100,570,40,40), "Button 1") )
{
Debug.Log("Texture 1 should come up");
renderer.material.mainTexture = crate_tex1;
_mouseClick = false; //This part of the code hides the buttons away
}
if (GUI.Button (Rect (175,570,40,40), "Button 2") )
{
Debug.Log("Texture 2 should come up");
renderer.material.mainTexture = crate_tex2;
_mouseClick = false; //This part of the code hides the buttons away
}
}
}
عيب هذا الكود:
1- ان عمل كلك على اي من الازرار لتغيير االخامة فان جميع الازرار تختفي ولا استطيع تجربة خامة اخرى على نفس الجسم
2- لا تظهر الازرار مجددا الا بعد عمل كلك على اي من الاجسام
أخيرا...
أتمنى ان أجد الحل لديكم... هل من طريقة لتعديل وتحسين هذا الكود... او فكرة اخرى لحل المشكلة؟
ولكم الشكر
تعليق