Unconfigured Ad Widget

تقليص

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

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

درس ToCharArray() لاخراج الحوارات في unity 3d

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

  • درس ToCharArray() لاخراج الحوارات في unity 3d

    بسم الله الرحمن الرحيم


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


    ملاحظه ""للعلم ان الكثير يستخدم الكلمات والحوارات بشكل صور ثابته ""



    الان نعرف متغير ونحدد نوعة ونضع في داخلة نص او جملة

    مثال
    كود PHP:
    var word String "Does anyone here speak Arabic"

    يمكن تعريف المتغير بشكل مباشر دون تحديد نوعه
    مثال
    كود PHP:
    var word "Does anyone here speak Arabic"


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

    بالبداية ننشىئ متغير ونسمية chars وسيكون في داخلة كل الاحرف والفراغات التي توجد في النص "Does anyone here speak Arabic"


    مثال لتحول النص الي مصفوفة

    كود PHP:
    var chars word.ToCharArray(); 

    الان نريد طباعة الخانة رقم 0 في المصفوفة chars

    كود PHP:
    print(chars[0]); 
    سوف يتم طباعة الحرف الاول من النص وهو "D"


    __________________________________________________


    النتيجة النهائيه وضغ نص وتحويله الي مصفوفة وطباعة قيمة الخانة رقم صفر

    كود PHP:
    var word String "Does anyone here speak Arabic";

    var 
    chars word.ToCharArray();

    function 
    Update () {

    print(
    chars[0]);


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


    لقد تعرفنا على طريقة استدعاء خانة محددة في المصفوفة وطباعة قيمتها

    كود PHP:
    print(chars[0]); 

    الان نريد طباعة كل ما تحملة المصفوفة النصيه chars

    نستخدم السكربت التالي


    كود PHP:
       for (var letter in chars
        {
     
      print(
    letter);

        } 
    هنا قمنا بتعريف متغير باسم letter

    وقلنا له ان هذا letterيساوي الحرف الاول في مصفوفة chars

    ولكن for سوفة تستمر بالدوران وتجل letterيساوي الحرف الثاني في مصفوفة chars

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

    وسيتم طباعة كل الاحرف في الفراغات


    النتيجة النهائيه طباعة كل الاحرف في المصفوفة chars

    كود PHP:
    var word String "Does anyone here speak Arabic";

    var 
    chars word.ToCharArray();

    function 
    Update () {


       for (var 
    letter in chars
     
      {
     
      print(
    letter);
     
      }



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


    الان نقوم بطباعة كل الاحرف في المصفوفة في GUI Text
    وهو الجيم اوجكت المخصص لطباعة الحوارات والكلمات


    كود PHP:
       guiText.text += letter
    بحيث يتم طباعة الحرف الاول واضافة الحرف الثاني والثالثه الي نهاية النص

    ملاحظه " يجب انشاء GUI Text ولصق السكربت به "

    كود PHP:
    var word String "Does anyone here speak Arabic";

    var 
    chars word.ToCharArray();

    function 
    Update () {


       for (var 
    letter in chars
     
      {
      
       
    guiText.text += letter;
     
      }


    الان نضيف سكربت بسيط لجعل الاحرف تطبع حرفا حرفا بفارق زمني
    باستخدام السكربت

    كود PHP:
       yield WaitForSeconds (1.0); 
    ملاحظه "لايمكن اضافة yield WaitForSeconds في دالة Update "

    وعليه سوف نضع دالة start ونسدعي دالة textprint لطباعة النصوص

    مثال

    كود PHP:
    var word String "Does anyone here speak Arabic";

    var 
    chars word.ToCharArray();



    function 
    Start (){

       
    textprint () ;

    }




    function 
    textprint () {


      
     for (var 
    letter in chars
     
      {
      
       
    guiText.text += letter;
       
     yield 
    WaitForSeconds (1.0);
     
      }


    وبذلك تكون النتيجة النهائيه طباعة الاحرف بفارق زمني مقداره ثانية واحدة






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



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


    نقول لااا مشكلة نقوم باضافة بسيطه للسكربت بحيث يطبع كلمات ويتوقف عن الفراغات

    بس تدفع كاااام
    اكيييد ذكر الله والصلاة على النبي


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

    كود PHP:
      if(letter!=" ")
        
        {
        
        
    guiText.text += letter;
        
        }
       
       if(
    letter==" ")
       
        {
         
      
    guiText.text += letter;
        
        yield 
    WaitForSeconds (1.0);


        
        } 


    بالتالي سيكون النتيجة النهائيه هي كالتالي

    كود PHP:
    function Start (){

       
    textprint () ;

    }




    function 
    textprint () {


     
     for (var 
    letter in chars
     
      {
     
       if(
    letter!=" ")
       
        {
       
        
    guiText.text += letter;
       
        }
       
       if(
    letter==" ")
       
        {
      
          
    guiText.text += letter;
       
       
    yield 
    WaitForSeconds (1.0);
        
        }
     
      }



    الان ناتي لاضافة جديد اخيره مهمه وهي الصوت عند ظهور الكلمات


    نعدل على السكربت بالطريقة التالية


    كود PHP:
    //var word = "Does anyone here speak Arabic";

    var word String "Does anyone here speak Arabic";

    var 
    chars word.ToCharArray();

    var 
    sound AudioClip;



    function 
    Start (){
      
     
    textprint () ;

    }



    function 
    textprint () {


      
     for (var 
    letter in chars
      
      {
     
       if(
    letter!=" ")
       
        {
        
        
    guiText.text += letter;
        
        }
        
       if(
    letter==" ")
        
        {
       
        
    guiText.text += letter;
       
        
    audio.PlayOneShot (sound);
       
        yield 
    WaitForSeconds (1.0);
     
          }
     
      }




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



  • #2
    تسلم يا اخي هذا بالضبط ما كنت اود معرفته

    لكن عندي سؤال ، الكود for على ما اظن يتطلب 3 معلومات هكذا : i=0 ; i<20 ; i++ i

    اظنك كنت تريد كتابة foreach ، لكن لا ادري ربما لم تخطئ لاني لا اعرف في الجافا (فقط سي شارب)

    تعليق


    • #3
      درس جميل جدا مشكور
      ان شاء الله حجرب و اعطيكم الكود بالسي شارب للذي ما يستخدموا جافا

      تحياتي
      FaceBook
      Here

      Ask Me
      Here
      My Channel In Youtube
      Here

      ____________________________________________

      لكي تعيش عليك ان تتقن فن التجاهل باحتراف

      تعليق


      • #4
        الموضوع رائع جدا ومفيد اوى والمعلومات التى توجد به قيمة جدا .. وبصراحة افتقدت كثيرا لتلك المواضيع فى المنابر .. ويعجبنى رجوعك مرة أخرى لتلك الدروس .. شكرا لك .

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

        تعليق


        • #5
          المشاركة الأصلية بواسطة oussama23 مشاهدة المشاركة
          تسلم يا اخي هذا بالضبط ما كنت اود معرفته

          لكن عندي سؤال ، الكود for على ما اظن يتطلب 3 معلومات هكذا : i=0 ; i<20 ; i++ i

          اظنك كنت تريد كتابة foreach ، لكن لا ادري ربما لم تخطئ لاني لا اعرف في الجافا (فقط سي شارب)
          لا ما يحتاج العناصر الثلاثه اللوب بيتكرر حتئ اخر عنصر بالمصفوفه
          بالنسبه للسي شارب لازم ابحث لك ما ني متاكد من الاجابه
          بس سهل تحويل الكود للسي
          اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
          وتفتك باعدائك اعداء الدين


          تعليق


          • #6
            مجهود تشكر عليه اخي مبارك *^*

            تعليق


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

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


              تعليق


              • #8
                المشاركة الأصلية بواسطة ProToN مشاهدة المشاركة
                الموضوع رائع جدا ومفيد اوى والمعلومات التى توجد به قيمة جدا .. وبصراحة افتقدت كثيرا لتلك المواضيع فى المنابر .. ويعجبنى رجوعك مرة أخرى لتلك الدروس .. شكرا لك .

                بالنسبة لك يا أخ أسامة ... سأوضح لك الأمر نيابة عنه ريثما يرى ردك .. ان الجافا ليس بها دالة foreach ولا يوجد غير دالة for فقط والجافا يفرق بين الدالة التى تتحدت عنها ودالة foreach عن طريق ما بداخل الأقواس . ولكن لو حولت الكود للسى شارب هتكتب foreach
                تسلم اخي بروتون علا المرور وكلماتك الطيبه
                واشكرك علا الرد وفرت علي عنا البحث واسترجاع المعلومات
                بصراحه صاير انسئ كثيرا اشيا عن اليونتي
                اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                وتفتك باعدائك اعداء الدين


                تعليق


                • #9
                  المشاركة الأصلية بواسطة خالدالعيسى مشاهدة المشاركة
                  مجهود تشكر عليه اخي مبارك *^*
                  تسلم اخوي خالد علا تشريفك لي
                  اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                  وتفتك باعدائك اعداء الدين


                  تعليق


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

                    لكن عندما حاولت اعمله في السي شارب لم ينجح بسبب عدم وجود waitforseconds حاولت اعمله بكثير اشكال لكن اقصى تقدم توصلتله هو انه يطبع الاحرف بشكل غير مرتب
                    FaceBook
                    Here

                    Ask Me
                    Here
                    My Channel In Youtube
                    Here

                    ____________________________________________

                    لكي تعيش عليك ان تتقن فن التجاهل باحتراف

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة لا اعلم مشاهدة المشاركة
                      لا ما يحتاج العناصر الثلاثه اللوب بيتكرر حتئ اخر عنصر بالمصفوفه
                      بالنسبه للسي شارب لازم ابحث لك ما ني متاكد من الاجابه
                      بس سهل تحويل الكود للسي
                      لا عادي اخي كنت اظن هناك غلط لا ادعي تكتب درس بسي شارب انا اعرف كيف اترجمو

                      على كل حال جزاك الله خيرا

                      تعليق


                      • #12
                        المشاركة الأصلية بواسطة لا اعلم مشاهدة المشاركة
                        واشكرك علا الرد وفرت علي عنا البحث واسترجاع المعلومات
                        بصراحه صاير انسئ كثيرا اشيا عن اليونتي
                        لا شكر على واجب وأنا برده لو سبت البرمجة شوية بنسى فيها حاجات كثيرة ..

                        المشاركة الأصلية بواسطة matrixinc مشاهدة المشاركة
                        لكن عندما حاولت اعمله في السي شارب لم ينجح بسبب عدم وجود waitforseconds حاولت اعمله بكثير اشكال لكن اقصى تقدم توصلتله هو انه يطبع الاحرف بشكل غير مرتب
                        أريد أن أوضح شىء صغير لك أن كتابة دالة waitforseconds فى الجافا مختلفة عن السى شارب ولكن توجد مثلها بالضبط فى السى شارب وتكتب هكذا yield return new WaitForSeconds وطبعا تحط الزمن فى الأقواس ولو عايز تتأكد شوفها فى السكربت ريفرنس فهو متوفر بالثلاث لغات

                        تعليق


                        • #13
                          المشاركة الأصلية بواسطة ProToN مشاهدة المشاركة
                          لا شكر على واجب وأنا برده لو سبت البرمجة شوية بنسى فيها حاجات كثيرة ..


                          أريد أن أوضح شىء صغير لك أن كتابة دالة waitforseconds فى الجافا مختلفة عن السى شارب ولكن توجد مثلها بالضبط فى السى شارب وتكتب هكذا yield return new WaitForSeconds وطبعا تحط الزمن فى الأقواس ولو عايز تتأكد شوفها فى السكربت ريفرنس فهو متوفر بالثلاث لغات
                          بالفعل بحثت عنها لكنها لا تعمل داخل void
                          حسب ما رايت في الرفرنس بدل void يستخدمون IEnumerator
                          حاولت وضعها و استخدامها لكن لم تعمل ...
                          FaceBook
                          Here

                          Ask Me
                          Here
                          My Channel In Youtube
                          Here

                          ____________________________________________

                          لكي تعيش عليك ان تتقن فن التجاهل باحتراف

                          تعليق


                          • #14
                            ماهر بخصوص السي شارب اذا لم تعمل يمكن انت كتبت IEnumeraotr Update وهذا غير منطقي

                            ولو حطيتها في فنكشن منفردة يجب ان تعرف انو الدوال من نوع IEnumerator يتم استدعائها بهذه الطريقة :

                            كود:
                            void Update(){
                            
                            if(Input.GetKeyDown(KeyCode.Space)){
                            StartCoroutine(Example()) ;
                            }
                            
                            }
                            
                            IEnumerator Example(){
                            Debug.Log("Please Wait");
                            yield return new WaitForSeconds(1);
                            Debug.Log(time.Time);
                            
                            }

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة matrixinc مشاهدة المشاركة
                              بالفعل بحثت عنها لكنها لا تعمل داخل void
                              حسب ما رايت في الرفرنس بدل void يستخدمون IEnumerator
                              حاولت وضعها و استخدامها لكن لم تعمل ...
                              أول حاجة عايز أفهمك ليه هى لا تعمل فى الدالة void لانها ترجع قيمة بنوع معين ونوع هذه القيمة المرجعة هى IEnumerator ..
                              ثانيا قد لا تعمل الدالة لأن كما قرأت لكى تستدعى دالة من هذا النوع يجب أن تضعها فى StartCoroutine()
                              يعنى هتكتب
                              كود:
                              StartCoroutine(textprint())
                              أرجو أن أكون قد أفدتك ولو حصل مشكلة ثانية قولى

                              تعليق

                              يعمل...
                              X