«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
نکاتی از برنامه نویسی یونیتی :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

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

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

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

جمعه, ۲ مرداد ۱۳۹۴، ۱۰:۱۰ ق.ظ

نکاتی از یونیتی :


ما مستقیم نباید transform.position رو دستکاری کنیم و بهتره مقداری رو پردازش و محاسبه کنیم و توی یه متغیری بریزیم،سپس مقدار اون متغیر رو بریزیم توی بردار x یا y یا z از ساب کلاس position.

همچنین اگه یه مقدار اعشاری مثل 0.5 یا 0.6 یا ...(اینا مثال هست) رو نوشتیم اگه خطای تبدیل double به float داد باید حتما تبدیل نوع موقت رو انجام بدیم( به این صورت که یه پرانتز باز و بسته می کنیم قبل از اسم متغیر می ذاریم و توش نوع تبدیل رو می ذاریم مثل (float) .)

حالا این کد رو ببینید:


کد :
    void Update(){
        if (
Input.GetKey (KeyCode.LeftArrow)) 
        {
            
pos transform.position;
            
pos.-= (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
از خطا دریافت می کنیم باید قبلش مقداری رو در یک متغیر temporary یا موقتی بریزیم و سپس ربطش بدیم به position.x یا position.y یا position.z و ... .


توضیحات اضافی:

در یونیتی transform.position می تونه از نوع بردار دو بعدی (Vector2) بوده (یعنی فقط دو مقداری x و y) و سه بعدی (Vector3) باشه(سه تا بردار رو می تونیم دستکاری کنیم x و y و z)

x یعنی محور چپ و راست(اگه مقدار مثبت بدیم یعنی راست. اگه مقدار منفی بدیم یعنی چپ)
y یعنی محور بالا و پایین(اگه مقدار مثبت بدیم یعنی بالا، اگه مقدار منفی بدیم یعنی پایین)
z یعنی محور جلو و عقب(اگه مقدار مثبت بدیم یعنی جلو، اگه مقدار منفی بدیم یعنی عقب)

یادتون نره متغیر pos رو از نوع Vector3 در بالای برنامتون تعریف کنید. اینطوری:
کد :
private Vector3 pos
البته اگه public رو به جای private بذارید عمومی میشه و وقتی اسکریپت رو به گیم ابجکت دلخواه ربط می تونید توی پنجره ی inspector خصوصیت pos به گیم ابجکت اضافه می شه و می تونید از ورودی مقدارشو بخونید.ولی من خصوصی(private) تعریف کردم چون نیاز نداشتم ولی بهتره شما public تعریف کنید.

یه نکته ی دیگه در مورد اسم کلاس های سیشارپ اینه که بعد از public class (معمولا حط اول اسکریپت های سیشارپی) حتما اسم کلاس باید همنام اسم اسکریپت باشه.مثلا اگه اسکریت شما اسمش هست ali سپس اینطوری میشه :
کد :

public class ali:MonoBehaviour
موافقین ۰ مخالفین ۰ ۹۴/۰۵/۰۲
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی