نکاتی از برنامه نویسی یونیتی
جمعه, ۲ مرداد ۱۳۹۴، ۱۰:۱۰ ق.ظ
نکاتی از یونیتی :
ما مستقیم نباید transform.position رو دستکاری کنیم و بهتره مقداری رو
پردازش و محاسبه کنیم و توی یه متغیری بریزیم،سپس مقدار اون متغیر رو
بریزیم توی بردار x یا y یا z از ساب کلاس position.
همچنین اگه یه مقدار اعشاری مثل 0.5 یا 0.6 یا ...(اینا مثال هست) رو
نوشتیم اگه خطای تبدیل double به float داد باید حتما تبدیل نوع موقت رو
انجام بدیم( به این صورت که یه پرانتز باز و بسته می کنیم قبل از اسم متغیر
می ذاریم و توش نوع تبدیل رو می ذاریم مثل (float) .)
حالا این کد رو ببینید:
کد :
void Update(){
if (Input.GetKey (KeyCode.LeftArrow))
{
pos = transform.position;
pos.x -= (float)0.5;
transform.position = pos;
}
در کد بالا رویداد Update رو بکار بردیم.
گفتیم اگه کاربر فلش چپ رو زد پوزیشن رو دریافت کنه و 0.5 تا ازش کم کنه و نتیجه رو در متغیر pos ریختم و نهایتا pos رو نسبت دادم به transform.position.x.
اگه مستقیما می یومدم اینطوری کد می نوشتم خطا می داد :
کد:
if (Input.GetKey (KeyCode.LeftArrow))
{
//pos = transform.position;
//pos.x -= (float) 0.5;
transform.position.x -= (float) 0.5;
}
کد:
error CS1612: Cannot modify a
value type return value of `UnityEngine.Transform.position'. Consider
storing the value in a temporary variable
توضیحات اضافی:
در یونیتی transform.position می تونه از نوع بردار دو بعدی (Vector2) بوده (یعنی فقط دو مقداری x و y) و سه بعدی (Vector3) باشه(سه تا بردار رو می تونیم دستکاری کنیم x و y و z)
x یعنی محور چپ و راست(اگه مقدار مثبت بدیم یعنی راست. اگه مقدار منفی بدیم یعنی چپ)
y یعنی محور بالا و پایین(اگه مقدار مثبت بدیم یعنی بالا، اگه مقدار منفی بدیم یعنی پایین)
z یعنی محور جلو و عقب(اگه مقدار مثبت بدیم یعنی جلو، اگه مقدار منفی بدیم یعنی عقب)
یادتون نره متغیر pos رو از نوع Vector3 در بالای برنامتون تعریف کنید. اینطوری:
کد :
private Vector3 pos;
یه نکته ی دیگه در مورد اسم کلاس های سیشارپ اینه که بعد از public class (معمولا حط اول اسکریپت های سیشارپی) حتما اسم کلاس باید همنام اسم اسکریپت باشه.مثلا اگه اسکریت شما اسمش هست ali سپس اینطوری میشه :
کد :
public class ali:MonoBehaviour
۹۴/۰۵/۰۲