Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

الرجاء المساعدة من خبراء البرمجة في Unity

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الرجاء المساعدة من خبراء البرمجة في Unity

    الأخوة الكرام
    السلام عليكم
    لاني بفضل الله تعالى مهندس معماري، و احببت ان أقدم اعمالي بطريقة 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- لا تظهر الازرار مجددا الا بعد عمل كلك على اي من الاجسام

    أخيرا...
    أتمنى ان أجد الحل لديكم... هل من طريقة لتعديل وتحسين هذا الكود... او فكرة اخرى لحل المشكلة؟
    ولكم الشكر
    التعديل الأخير تم بواسطة أبو سعود; 13 / 09 / 2012, 05:15 AM.
    اللهم اغفر لأمي و أبي وارحمهما كما ربياني صغيرا

  • #2
    عليكم السلام ورحمة الله وبركاته

    قوم بإضافة السكربت التالي باسم GUICam.js ووضعه على الكاميرا فقط مع اضافة الخامات اليه

    كود:
    var button1_tex : Texture;
    var button2_tex : Texture;
    var button3_tex : Texture;
    var crate_tex1 : Texture;
    var crate_tex2 : Texture;
    var crate_tex3 : Texture;
    
    @HideInInspector
    var object : Renderer;
    
    
    function OnGUI ( ) {
    	if ( GUI.Button (Rect (400, 300, 80, 40),button1_tex) )
    		object.material.mainTexture = crate_tex1;
    	
    	if ( GUI.Button (Rect (300, 300, 80, 40), button2_tex) )
    		object.material.mainTexture = crate_tex2;
    	
    	if ( GUI.Button (Rect (200, 300, 80, 40), button3_tex) )
    		object.material.mainTexture = crate_tex3;
    }

    ثم قم بحفظ السكربت التالي ووضعه على كل المجسمات المطلوب تغيير خامتها
    كود:
    private var cam : GUICam;
    function Awake () {
        cam = Camera.main.GetComponent(GUICam);
    }
    
    function OnMouseDown () {
    	cam.object = renderer;
    }
    كتبت الكود بدون تجربة فاذا ظهر خطا اخبرني
    بالتوفيق
    {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

    تعليق


    • #3
      تحية وشكر

      الأخ الكريم GameGun
      سلام عليكم

      اولا :
      لك مني جزيل الشكر على اهتمامك بالرد والمساعدة

      ثانيا:
      عملت كاميرا جديدة بدل الكاميرا الاصلية main Camera
      و طبقت كل ما جاء في مشاركتك ولكن لم يحدث شيء... أقصد انه لم تتغير خامات الاجسام رغم اني عملت كلك عليها كلها

      وعملت كلك ايضا على جميع ال buttons التي ظهرت...

      و انتبهت انه ظهرت رسائل تنبيهية في Consol , وهي كالتالي:

      1- اول ما شغلت اللعية ظهرت الرسالة التالية

      NullReferenceException
      Object Mat.Awake () (at Assets/Crosshair/Object Mat.js:4)

      2- عندما عملت كلك على واحد من الأجسام ، ظهرت رسالة وهي :


      NullReferenceException: Object reference not set to an instance of an object
      Object Mat.OnMouseDown () (at Assets/Crosshair/Object Mat.js:8)
      UnityEngine.SendMouseEventsoSendMouseEvents()

      3- عندما عملت كلك على اي واحد من الأزرار ظهرت الرسالة التالية:

      UnassignedReferenceException: The variable object of 'GUICam' has not been assigned.
      You probably need to assign the object variable of the GUICam script in the inspector.
      GUICam.OnGUI () (at Assets/Crosshair/GUICam.js:14)

      4- اوقفت اللعبة و اخترت GUICam script في inspector وجدت شيئا اعتبره مفقودا... انظر الصورة

      اضغط على الصورة لعرض أكبر. 

الإسم:	GUI_Inspector.png 
مشاهدات:	1 
الحجم:	68.3 كيلوبايت 
الهوية:	3283570

      لم أعرف ماذا أضع فيه...

      ارجو ان يكون الشرح مسهبا وواضحا

      تحياتي لك وبانتظار نصيحتك
      اللهم اغفر لأمي و أبي وارحمهما كما ربياني صغيرا

      تعليق


      • #4
        الكامير الجديدة الذى اضفتها غير الtag الى main camera
        او استبدل السكربت الثاني بـ
        كود:
        var cam : GUICam;
        
        function OnMouseDown () {
            cam.object = renderer;
        }
        وستحتاج لوضع الكامير فى المتغير cam

        اما بخصوص الفراغ فى السكربت الاول ضع به احد المبانى المراد تغيير الاكساء له
        {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

        تعليق


        • #5
          ألف شكر

          الأخ الكريم GameGun

          الحمد لله ...
          و الف شكر لك وجزاك الله كل خير...

          عملت حسب توجيهك... فقط غيرت Camera Tag الى MainCamera ... وكل شي كان تمام 100%

          طبعا الكاميرا اللي استعملتها انا هي كاميرا ثابتة...

          الآن بودي استخدم First Person Controller والكاميرا التي معه... وكما تعرف ان المشهد في هذه الحالة يتحرك بحركة الماوس وفي جميع الاتجاهات، اضافة الى حركة اللاعب نفسه...
          فلو عملت كلك على جسم ومن ثم حركت الماوس لكي اعمل كلك ثانية على احد الأزرار لتغيير خامة الجسم...فان المشهد سيتغير بحسب حركة الماوس...

          طلبي هنا
          هل ممكن تطوير السكربتات اللي تفضلت بهم ... بحيث مثلا انه عند عمل كلك على اي جسم يكون المشهد جامد لا يتحرك بحركة الماوس لكي اختار الخامة المناسبة من خلال الازرار، وبعد ان اخذت قراري بشان الخامة، ان يعود المشهد يتحرك لأبدأ باختيار جسم آخر وتغيير خامته ... وهكذا بالنسبة لباقي الاجسام في المشهد...

          اعرف أني تعبتك معي...
          واقول إن امكن ان تساعدني في عمل السكربت ، كان بها...
          واذا لا... فارجو منك ان تعطيني الفكرة وانا احاول بجهدي الشخصي البحث عن حل..

          لك مني دعوات الخير للدنيا والآخرة
          اللهم اغفر لأمي و أبي وارحمهما كما ربياني صغيرا

          تعليق


          • #6
            عندى سؤال : هل من اللمكن ان نغير الماتريال بتاعة الجسم نفسو باسكربت ام لا ؟
            -:| My Games |:-
            AfterEarth Online SOON

            -:| Contact Us |:-
            Facebook Page :- NTStudio

            تعليق


            • #7
              نعم اخي
              انا جربت السكربتات...
              والنتيجة طيبة جدا
              اللهم اغفر لأمي و أبي وارحمهما كما ربياني صغيرا

              تعليق


              • #8
                نعم اخي
                انا جربت السكربتات...
                والنتيجة طيبة جدا
                اللهم اغفر لأمي و أبي وارحمهما كما ربياني صغيرا

                تعليق


                • #9
                  استبدل السكربتين
                  كود:
                  var button1_tex : Texture;
                  var button2_tex : Texture;
                  var button3_tex : Texture;
                  var crate_tex1 : Texture;
                  var crate_tex2 : Texture;
                  var crate_tex3 : Texture;
                  
                  @HideInInspector
                  var object : Renderer;
                  private var select : boolean = false;
                  private var mouseLook : MouseLook;
                  
                  function Awake ( ) {
                  	mouseLook = transform.GetComponents(MouseLook);
                  }
                  
                  function OnGUI ( ) {
                  
                  	if(select)
                  	{
                  		Time.timeScale = 0;
                  		mouseLook.enabled = false;
                  		
                  		if ( GUI.Button (Rect (400, 300, 80, 40), button1_tex) )
                  			changeTex(crate_tex1);
                  		
                  		if ( GUI.Button (Rect (300, 300, 80, 40), button2_tex) )
                  			changeTex(crate_tex2);
                  		
                  		if ( GUI.Button (Rect (200, 300, 80, 40), button3_tex) )
                  			changeTex(crate_tex3);
                  	}
                  }
                  
                  function changeTex(tex : Texture) {
                  	object.material.mainTexture = tex;
                  	select = false;
                  	Time.timeScale = 1;
                  	mouseLook.enabled = true;
                  }
                  الثاني

                  كود:
                  private var cam : GUICam;
                  function Awake () {
                      cam = Camera.main.GetComponent(GUICam);
                  }
                  
                  function OnMouseDown () {
                  	cam.object = renderer;
                  	cam.select = true;
                  }
                  {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة أبو سعود مشاهدة المشاركة
                    نعم اخي
                    انا جربت السكربتات...
                    والنتيجة طيبة جدا
                    لا انا قصدى حاجة تنيا

                    هنا اسكربت الاخ GameGun بيغير التكستشر الى على الماتريال موش الماتريال كلها وانا عاوز اغير الماتريال كلها
                    انا ممكن اجربها بس انا خارج المنزل وبتكلم من الموبيل

                    انا بفكر فى حاجة كدا محيرانى وهتجننى فى نظام الباتشات فى اللعبة عنى فا لو الاخ GameGun عارف بسرعة عشان انا تفكيرى واقف عند النقطة دى

                    شكرا مقدما
                    -:| My Games |:-
                    AfterEarth Online SOON

                    -:| Contact Us |:-
                    Facebook Page :- NTStudio

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركة
                      عندى سؤال : هل من اللمكن ان نغير الماتريال بتاعة الجسم نفسو باسكربت ام لا ؟
                      لاحظت فى اليونيتى حتي الان يمكن عمل اي شيئ بالسكربت
                      {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                      تعليق


                      • #12
                        ممكن تغيير الماتيريل من الكود بعمل متغير يحتوى الماتيريل المطلوب

                        http://docs.unity3d.com/Documentatio...-material.html
                        {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                        تعليق


                        • #13
                          شكرا جزيلا
                          -:| My Games |:-
                          AfterEarth Online SOON

                          -:| Contact Us |:-
                          Facebook Page :- NTStudio

                          تعليق


                          • #14
                            تعديل فى السكربت الاول GetComponent بدل من GetComponents
                            {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                            تعليق


                            • #15
                              مشاء الله عليك مبدع ما خاب ضني فيك جيم قن

                              قال المركز الثاني بالمسابقة قال هههههههههههههههههههه

                              شكلي بزور النتايج واخليك الاول ههههههههههههههههههههههههههههه
                              اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                              وتفتك باعدائك اعداء الدين


                              تعليق

                              يعمل...
                              X