معمولا وقتی نیاز به گرفتن ابعاد یک gameobject داخل یونیتی باشه از یکی از دو خصوصیت Transform.localScale و Transform.lossyScale استفاده میکنیم.

تفاوت Loca lScale و Lossy Scale برای Transform گیم آبجکت ها در یونیتی

خصوصیت Transform.localScale اندازه گیم آبجکت مورد نظر رو “به نسبت شی پدر” نگه داری میکنه و Transform.lossyScale اندازه گیم آبجکت رو “بدون درنظر گرفتن ابعاد شی پدر” بر میگردونه یعنی اندازه واقعی شی.

برای مثال:

شما دو گیم آبجکت دارید ، A و B ، همچنین A زیرمجموعه B هست

A که سایزش 20.20.20 باشه(20 در سه محور)

و در طرف دیگه گیم آبجکت B سایزش2 – 2 – 2 باشه

 

نمای Hierachy از مثال ذکر شده

نمای Hierachy از مثال ذکر شده

توی این حالت اندازه واقعی A برابره با 40 چون شی پدرش اندازه 2 داره هرچند داخل inspector مقدار 20 رو ببینید،درواقع lossy scale اون میشه 40 اما local scale یا همون اندازه محلیش میشه 20.

در این حالت اگر A از حالت فرزندی B خارج بشه سایز واقعیش داخل inspector نمایش داده میشه و توی این حالت local و lossy برابر میشن چون چیزی نیست که سایز A رو تغییر بده.

برای آشنایی بیشتر هم میتونید داخل سین یونیتی روی ابعاد شی مورد نظر خودتون کمی تغییرات ایجاد کنید و امتحان کنید.

 

رفرنس های انگلیسی که برای مطالعه بیشتر ممکنه براتون مفید باشن:
https://docs.unity3d.com/ScriptReference/Transform-lossyScale.html
https://www.reddit.com/r/Unity3D/comments/srxcou/what_is_the_difference_between_a_lossyscale_and_a/