آموزش پشتیبانی از زبان فارسی در یونیتی

یکی از مسائل مهم در بازی سازی با یونیتی که باید توجه داشته باشیم، نمایش صحیح زبان فارسی هست.

از اونجایی که یونیتی به صورت پیش‌فرض از زبان فارسی و عربی پشتیبانی نمیکنه و همینطور شاید پیدا کردن راه حل برای بعضی‌ها ساده نباشه، توی این مطلب پشتیبانی از زبان فارسی در یونیتی رو کامل توضیح میدیم.

روش های پشتیبانی از زبان فارسی در یونیتی

دو حالت برای فارسی نوشتن توی یونیتی وجود داره:

۱- توی صحنه متن رو داخل text بنویسید

۲- توی اسکریپت متن رو به text نسبت بدید

توی هر دو حالت اگر فارسی بنویسید، یونیتی حروف فارسی رو به صورت جدا جدا نمایش میده.

راه اول برای این مشکل اینه که شما نوشته خودتون رو ابتدا با استفاده از ابزارهای فارسی‌ساز درست کنید و بعد توی صحنه یا اسکریپت بذارید.

برای این کار میتونید از ابزار زیر استفاده کنید.

فارسی ساز آنلاین (کلیک کنید)

راه دوم زمانی استفاده میشه که بخواین توی اسکریپت متن فارسی رو بنویسید و خودتون رو درگیر فارسی‌سازی متن نکنید.

مثلا وقتی که میخواین یک پیام رو از توی اسکریپت به کاربر نمایش بدید. برای این کار از یک کلاس استفاده میکنیم که به شکل خودکار این عمل رو انجام بده.

کلاس زیر رو دانلود کنید و توی پروژه خودتون قرار بدید.

دریافت کلاس فارسی

برای استفاده، از تابع faConvert استفاده کنید، به شکل زیر:

txtMessage.text = Fa.faConvert("نوشته شما");

حجت ریحانه

من عاشق برنامه‌نویسی، یاد گرفتن و آموزش دادن هستم. انجام کارای جدید توی برنامه‌نویسی رو بیشتر به چشم سرگرمی میبینم تا کار.

20 ديدگاه بر “آموزش پشتیبانی از زبان فارسی در یونیتی

  1. سلام و تشگر
    ببخشید من از این اسگریپت استفاده کردم. ولی یه مشکلی هست
    داخل اسکریپتی گه نوشتم بعد از پلی در ایدیتور کدها ناقص اجرا میشه ولی وقتی خروجی میگیرم بازی بالا میاد ولی کدها اجرا نمیشوند چرا؟؟؟ اسگریپت fa رو هم در شاخه asset گذاشتم.
    هیچ خطای هم نمیده.
    یونتی ۴.۶ هم هست
    لطفا کمک کنید
    تشکر

    1. سلام و وقت بخیر

      مشکلتون خیلی مبهم هست. یکم بیشتر توضیح بدید. ناقص اجرا شدن کدهاتون به چه شکل هست؟
      فقط کدهای مربوط به فارسی نویس این مشکل رو دارن یا بعضی کدهای دیگه هم اجرا نمیشه؟

  2. ببخشید که دیر جواب دادم
    مشکل از فارسی ساز نبود مشکل از یونتی بود
    من اینطور فهمیدم که اول باید jdk و .net ها رو نصب کنی بعد یونتی رو نصب کنیم
    اما من یونتی رو اول نصب کردم به خاطر همین مشکل داشت
    درسته فارسی ساز به jdk نیاز نداره اما من مبخواستم پرداخت درون برنامه ای رو پیاده کنم و با اسنفاده از فارسی ساز خطاها رو فارسی نشون بدم
    بازم معذرت میخوام و تشکر به خاطر این پلاگینی که نوشتید 🙂

  3. بسیار عالی , فقط یه سوال

    این اسکریپت مبدل شما با همه فونت ها سازگاره ؟
    یا کلا فونت استفاده نکنیم و فقط از دیفالت یونیتی استفاده کنیم ؟

    یه سوال دیگه متد مبدل شما تو تابع اپدیت نوشته شده ؟ یعنی دائما چک میشه یا پابلیکه و فقط در مواقع نیاز ؟
    رو گوشیای ضعیف هم جواب میده ؟
    چون این روش بنظر بهتر و راحتر میاد

    من برای نوشتن و نمایش متن فارسی مشکلی ندارم , اما وقتی بخوای متن رو از کاربر بگیری یکم داستان داره !!

    یه جورایی میشه گفت که من از روش اول استفاده میکنم. , یعنی یه فونت که خودم ازش خوشم بیاد رو رو سیستم نصب میکنم تا لیومون اون رو تو لیست فونت ها بیاره , بعد تبدیلو کپی و… .

  4. سلام.من وقتی از متن های طولانی استفاده میکنم ترتیب جملات به هم میخوره و جمله اول میره خط اخر و جمله اخر میاد خط اول.
    میشه بگید چطور این مشکلو حل کنم؟ممنون

  5. سلام
    مثلا اگه بخوایم تو player settings اسم برنامه رو فارسی بنویسیم باید چه کاری انجام بدیم؟؟؟

  6. با تشکر از شما بابت این ابزار مفیدتون
    اینم اگر به متن اضافه کنید خیلی خوبه برا افرادی ک مشکل دارن باهاش:
    تو متن های طولانی تر ترتیب جملات تو خط ها بهم میخوره که برای ترتیب بندی درست شما باید روی ابجکتتون که کامپوننت Text داره کلیک کنید و توی کامپوننت Text باید مقدار line spacing رو منفی کنید مثلا اگر مقدارش ۱ هست بزارید -۱! این کار باعث میشه دوباره تکتس هاتون واررونه بشه و به حالت درست نمایش داده بشه! اینم یک ترفند عالی برای کسایی که مشکل دارن. البته باید اینم بگم که توی این حالت گزینه Base fit از کار میفته پس کسایی که به این گزینه نیاز دارند (متن هاشون داینامیک و متغییر هست) بهتره قبل از استفاده از این روش متن های بازیشون رو چک کنن که مشکلی نداشته باشه. در غیر این صورت اگه بخوان تو حالت نرمالش خط هاشون رو درست نشون بدن باید یک اسکریپت مجزا بنویسن و کل متنشون رو توی یک ارایه ذخیره و از نو وارونه کنن که کار هر کسی نیست.

  7. سلام
    خیلی ممنون، پلاگینتپن خیلی خوب کار میکنه
    من در بازی خودم ازش استفاده کردم و میخوام اسم سازنده این پلاگین رو توی سازندگان بنویسم
    آیا شما تنهایی این پلاگین رو نوشتی؟

  8. اقا کمک کنید لطفا…من از این ماژولتون استفاده کردمجوابه داخل ادیتور…یعنی متن ها رو درست نشون میده و همه چی اوکیه و خروجیه webgl که میگیرم چیزی نشون نمیده جای متن ها یعنی فیلد های text خالی ان…

    1. سلام
      علی عزیز متاسفانه این مورد رو توی وب تست نکردم.
      نمیدونم مشکل از چی میتونه باشه و اینکه آیا برای همه اتفاق میافته یا نه.
      اگر از یونیتی ۲۰۱۹ استفاده میکنی میتونی از RTL TextMeshPro استفاده کنی.
      کیفیت بسیار بالایی داره و کار رو خیلی راحت میکنه.

  9. من قصد دارم نوشته ای که توسط کلاس fa کانورت شده رو بعد از نمایش توی دیتا بیس ذخیره کنم ولی چیزی که توی دیتا بیس ذخیره میشه یه چیز بهم ریختس میخواستم بدونم راهی هست که بعد از کانورت شدن نوشته توی کد بشه برعکس کانورت کرد که درست توی دیتا بیس ذخیره شه؟؟

    1. سلام
      امیرحسین عزیز متاسفانه کلاس همچین امکانی نداره.
      اگر دیتابیس شما آنلاین هست و نوشته‌ها به صورت علامت سوال هستن، مشکل از نحوه انکُد کردن و ارسال و ذخیره‌تون هست.
      در غیر این صورت با این روش اطلاع ندارم چطور میشه مشکل رو رفع کرد.
      توی یونیتی ورژن ۲۰۱۹ به بالا میتونید از پکیج RTL TextMeshPro استفاده کنید.

  10. اقا خیلی خیلی ممنون بابت پاسخ گوییتون مشکل من از فونتی بود که استفاده میکردم و خدا رو شکر برطرف شد فقط یه موضوعی اینکه اون ادیتور آنلاین مثل اینکه لینکش خراب شده و redirect میکنه به صفحه اصلی میشه لطفا لینکش رو درست کنید؟…بینهایت ممنون…

  11. سلام خسته نباشید م ممنون از این که این کد رو در اختیار بقیه هم گذاشتین.
    یه باگی که داره اینه کخ وقتی کلماتی مثل جایزه،شجره و… رو با متد Fa.faConvert تبدیل میکنم حرف ه آخر این کلمات به صورت ه چسبان نشون داده میشه و ار ه آخر استفاده نمیشه. البته فارسی ساز آنلاین این مشکل رو نداره. ممنونم

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *