در Unity، کلاس
1. `Quaternion.Euler(float x, float y, float z)`:
- توضیح: ایجاد یک Quaternion بر اساس زوایای Euler (Pitch، Yaw، Roll).
- نمونه کد:
2. `Quaternion.AngleAxis(float angle, Vector3 axis)`:
- توضیح: ایجاد یک Quaternion بر اساس یک زاویه و محور چرخش.
- نمونه کد:
3. `Quaternion.identity`:
- توضیح: Quaternion هویت (بدون چرخش یا جهت).
- نمونه کد:
4. `Quaternion.LookRotation(Vector3 forward, Vector3 upwards)`:
- توضیح: ایجاد یک Quaternion که به سمت یک جهت مشخص نگاه میکند.
- نمونه کد:
5. `Quaternion.Slerp(Quaternion a, Quaternion b, float t)`:
- توضیح: ایجاد یک Quaternion در طول یک مسیر قطبی بین دو Quaternion مبدأ و مقصد.
- نمونه کد:
6. `Quaternion.Lerp(Quaternion a, Quaternion b, float t)`:
- توضیح: ایجاد یک Quaternion در طول یک مسیر خطی بین دو Quaternion مبدأ و مقصد.
- نمونه کد:
7. `Quaternion.identity`:
- توضیح: Quaternion هویت (بدون چرخش یا جهت).
- نمونه کد:
8. `Quaternion.Inverse(Quaternion rotation)`:
- توضیح: معکوس یک Quaternion.
- نمونه کد:
9. `Quaternion.Euler(float x, float y, float z)`:
- توضیح: ایجاد یک Quaternion بر اساس زوایای Euler (Pitch، Yaw، Roll).
- نمونه کد:
10. `Quaternion.RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta)`:
- توضیح: چرخش یک Quaternion به سمت یک Quaternion هدف با محدودیت زاویه.
- نمونه کد:
11. `Quaternion.Euler(Vector3 euler)`:
- توضیح: ایجاد یک Quaternion بر اساس زوایای Euler (Pitch، Yaw، Roll) در یک Vector3.
- نمونه کد:
این متدها تنها یک بخش کوچک از توابع
#یونیتی #برنامه_نویسی
Quaternion برای نمایش و عملیات مربوط به چرخشها و جهتها در سه بعد استفاده میشود. در زیر توضیحات برخی از متدهای این کلاس به همراه نمونه کد آمده است:1. `Quaternion.Euler(float x, float y, float z)`:
- توضیح: ایجاد یک Quaternion بر اساس زوایای Euler (Pitch، Yaw، Roll).
- نمونه کد:
Quaternion rotation = Quaternion.Euler(45.0f, 90.0f, 0.0f);
2. `Quaternion.AngleAxis(float angle, Vector3 axis)`:
- توضیح: ایجاد یک Quaternion بر اساس یک زاویه و محور چرخش.
- نمونه کد:
float angle = 30.0f;
Vector3 axis = new Vector3(0.0f, 1.0f, 0.0f);
Quaternion rotation = Quaternion.AngleAxis(angle, axis);
3. `Quaternion.identity`:
- توضیح: Quaternion هویت (بدون چرخش یا جهت).
- نمونه کد:
Quaternion identityQuaternion = Quaternion.identity;
4. `Quaternion.LookRotation(Vector3 forward, Vector3 upwards)`:
- توضیح: ایجاد یک Quaternion که به سمت یک جهت مشخص نگاه میکند.
- نمونه کد:
Vector3 forwardDirection = new Vector3(0.0f, 0.0f, 1.0f);
Vector3 upDirection = Vector3.up;
Quaternion rotation = Quaternion.LookRotation(forwardDirection, upDirection);
5. `Quaternion.Slerp(Quaternion a, Quaternion b, float t)`:
- توضیح: ایجاد یک Quaternion در طول یک مسیر قطبی بین دو Quaternion مبدأ و مقصد.
- نمونه کد:
Quaternion quaternionA = Quaternion.Euler(0.0f, 90.0f, 0.0f);
Quaternion quaternionB = Quaternion.Euler(0.0f, 180.0f, 0.0f);
float t = 0.5f;
Quaternion slerpedQuaternion = Quaternion.Slerp(quaternionA, quaternionB, t);
6. `Quaternion.Lerp(Quaternion a, Quaternion b, float t)`:
- توضیح: ایجاد یک Quaternion در طول یک مسیر خطی بین دو Quaternion مبدأ و مقصد.
- نمونه کد:
Quaternion quaternionA = Quaternion.Euler(0.0f, 90.0f, 0.0f);
Quaternion quaternionB = Quaternion.Euler(0.0f, 180.0f, 0.0f);
float t = 0.5f;
Quaternion lerpedQuaternion = Quaternion.Lerp(quaternionA, quaternionB, t);
7. `Quaternion.identity`:
- توضیح: Quaternion هویت (بدون چرخش یا جهت).
- نمونه کد:
Quaternion identityQuaternion = Quaternion.identity;
8. `Quaternion.Inverse(Quaternion rotation)`:
- توضیح: معکوس یک Quaternion.
- نمونه کد:
Quaternion originalRotation = Quaternion.Euler(30.0f, 45.0f, 60.0f);
Quaternion inverseRotation = Quaternion.Inverse(originalRotation);
9. `Quaternion.Euler(float x, float y, float z)`:
- توضیح: ایجاد یک Quaternion بر اساس زوایای Euler (Pitch، Yaw، Roll).
- نمونه کد:
Quaternion rotation = Quaternion.Euler(45.0f, 90.0f, 0.0f);
10. `Quaternion.RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta)`:
- توضیح: چرخش یک Quaternion به سمت یک Quaternion هدف با محدودیت زاویه.
- نمونه کد:
Quaternion fromRotation = Quaternion.Euler(0.0f, 90.0f, 0.0f);
Quaternion toRotation = Quaternion.Euler(0.0f, 180.0f
, 0.0f);
float maxDegreesDelta = 30.0f;
Quaternion rotatedQuaternion = Quaternion.RotateTowards(fromRotation, toRotation, maxDegreesDelta);
11. `Quaternion.Euler(Vector3 euler)`:
- توضیح: ایجاد یک Quaternion بر اساس زوایای Euler (Pitch، Yaw، Roll) در یک Vector3.
- نمونه کد:
Vector3 eulerAngles = new Vector3(45.0f, 90.0f, 0.0f);
Quaternion rotation = Quaternion.Euler(eulerAngles);
این متدها تنها یک بخش کوچک از توابع
Quaternion در Unity هستند و برای کاربردهای مختلف میتوانید به مستندات Unity مراجعه کنید.#یونیتی #برنامه_نویسی
🔥3⚡1👍1
در Unity، اتربیوتها (Attributes) ابزارهایی هستند که به توسعهدهندگان این امکان را میدهند تا رفتار و نمایش خصوصیات مختلفی را برای کلاسها و متدها در ادیتور Unity تعیین کنند. در زیر چند اتربیوت اصلی با توضیحات آمدهاند:
1. `[SerializeField]`:
- توضیح: این اتربیوت به Unity میگوید که یک متغیر خصوصی در کلاس را در ادیتور نمایش دهد و به طور مستقیم با پنل اینسپکتور ارتباط دارد. این کار به توسعهدهندگان این امکان را میدهد که به متغیرهای خصوصی دسترسی داشته باشند و در عین حال، آنها را در ادیتور تغییر دهند.
- نمونه کد:
2. `[Header("My Section")]`:
- توضیح: این اتربیوت به توسعهدهندگان اجازه میدهد تا یک بخش جدید در پنل اینسپکتور برای گروهبندی و سازماندهی متغیرها و فیلدهای این کلاس ایجاد کنند.
- نمونه کد:
3. `[Range(min, max)]`:
- توضیح: این اتربیوت به توسعهدهندگان این امکان را میدهد تا یک محدوده برای یک عدد اعشاری یا صحیح تعیین کنند و یک اسلایدر در پنل اینسپکتور برای تنظیم آن فراهم شود.
- نمونه کد:
4. `[Tooltip("This is a tooltip.")]`:
- توضیح: این اتربیوت به توسعهدهندگان این امکان را میدهد تا یک توضیح کوتاه برای یک فیلد یا متغیر در پنل اینسپکتور ایجاد کنند. وقتی ماوس را بر روی فیلد میبرند، توضیح ظاهر میشود.
- نمونه کد:
5. `[HideInInspector]`:
- توضیح: این اتربیوت به Unity میگوید که یک متغیر خصوصی را در پنل اینسپکتور نمایش ندهد. معمولاً برای مخفی کردن متغیرهایی که برنامه نیازی به تنظیم آن در ادیتور ندارد، استفاده میشود.
- نمونه کد:
6. `[ExecuteInEditMode]`:
- توضیح: این اتربیوت به توسعهدهندگان اجازه میدهد که اسکریپت را در حالت ویرایش اجرا کنند و تغییرات را در صفحهی اصلی Unity نیز مشاهده کنند.
- نمونه کد:
اینها تنها چند نمونه از
اتربیوتهایی هستند که میتوانید در Unity استفاده کنید. هر اتربیوت ویژگیهای خاص خود را دارد و به توسعهدهندگان کمک میکند تا تعامل با پنل اینسپکتور را بهبود بخشند و اطلاعات بیشتری از وضعیت اجزای مختلف بازی در اختیار داشته باشند.
#یونیتی #برنامه_نویسی
1. `[SerializeField]`:
- توضیح: این اتربیوت به Unity میگوید که یک متغیر خصوصی در کلاس را در ادیتور نمایش دهد و به طور مستقیم با پنل اینسپکتور ارتباط دارد. این کار به توسعهدهندگان این امکان را میدهد که به متغیرهای خصوصی دسترسی داشته باشند و در عین حال، آنها را در ادیتور تغییر دهند.
- نمونه کد:
public class Example : MonoBehaviour
{
[SerializeField]
private int myInt = 42;
}
2. `[Header("My Section")]`:
- توضیح: این اتربیوت به توسعهدهندگان اجازه میدهد تا یک بخش جدید در پنل اینسپکتور برای گروهبندی و سازماندهی متغیرها و فیلدهای این کلاس ایجاد کنند.
- نمونه کد:
public class Example : MonoBehaviour
{
[Header("My Settings")]
public int myInt = 42;
public float myFloat = 3.14f;
}
3. `[Range(min, max)]`:
- توضیح: این اتربیوت به توسعهدهندگان این امکان را میدهد تا یک محدوده برای یک عدد اعشاری یا صحیح تعیین کنند و یک اسلایدر در پنل اینسپکتور برای تنظیم آن فراهم شود.
- نمونه کد:
public class Example : MonoBehaviour
{
[Range(0, 100)]
public int myIntInRange = 42;
}
4. `[Tooltip("This is a tooltip.")]`:
- توضیح: این اتربیوت به توسعهدهندگان این امکان را میدهد تا یک توضیح کوتاه برای یک فیلد یا متغیر در پنل اینسپکتور ایجاد کنند. وقتی ماوس را بر روی فیلد میبرند، توضیح ظاهر میشود.
- نمونه کد:
public class Example : MonoBehaviour
{
[Tooltip("This is the tooltip for myInt.")]
public int myInt = 42;
}
5. `[HideInInspector]`:
- توضیح: این اتربیوت به Unity میگوید که یک متغیر خصوصی را در پنل اینسپکتور نمایش ندهد. معمولاً برای مخفی کردن متغیرهایی که برنامه نیازی به تنظیم آن در ادیتور ندارد، استفاده میشود.
- نمونه کد:
public class Example : MonoBehaviour
{
[HideInInspector]
public int myHiddenInt = 42;
}
6. `[ExecuteInEditMode]`:
- توضیح: این اتربیوت به توسعهدهندگان اجازه میدهد که اسکریپت را در حالت ویرایش اجرا کنند و تغییرات را در صفحهی اصلی Unity نیز مشاهده کنند.
- نمونه کد:
[ExecuteInEditMode]
public class Example : MonoBehaviour
{
// کد اینجا قرار میگیرد
}
اینها تنها چند نمونه از
اتربیوتهایی هستند که میتوانید در Unity استفاده کنید. هر اتربیوت ویژگیهای خاص خود را دارد و به توسعهدهندگان کمک میکند تا تعامل با پنل اینسپکتور را بهبود بخشند و اطلاعات بیشتری از وضعیت اجزای مختلف بازی در اختیار داشته باشند.
#یونیتی #برنامه_نویسی
👍4🔥4⚡2
ترنسفرم یک مفهوم کلیدی در Unity است که موقعیت، چرخش و مقیاس یک شیء در فضای سه بعدی را تعیین میکند. در Unity، کلاس
1. `Translate(Vector3 translation)`:
- توضیح: افزودن یک ترجمه (تغییر موقعیت) به ترنسفرم.
- نمونه کد:
2. `Rotate(Vector3 eulerAngles)`:
- توضیح: افزودن یک چرخش به ترنسفرم با زوایا Euler به واحدهای درجه.
- نمونه کد:
3. `Scale(Vector3 scale)`:
- توضیح: افزودن یک مقیاس به ترنسفرم.
- نمونه کد:
4. `LookAt(Transform target, Vector3 upDirection)`:
- توضیح: چرخش به سمت یک نقطه خاص.
- نمونه کد:
5. `TransformPoint(Vector3 position)`:
- توضیح: تبدیل یک نقطه از فضای محلی به فضای جهانی ترنسفرم.
- نمونه کد:
6. `InverseTransformPoint(Vector3 position)`:
- توضیح: تبدیل یک نقطه از فضای جهانی به فضای محلی ترنسفرم.
- نمونه کد:
7. `TransformDirection(Vector3 direction)`:
- توضیح: تبدیل یک جهت از فضای محلی به فضای جهانی ترنسفرم.
- نمونه کد:
8. `InverseTransformDirection(Vector3 direction)`:
- توضیح: تبدیل یک جهت از فضای جهانی به فضای محلی ترنسفرم.
- نمونه کد:
9. `SetPositionAndRotation(Vector3 position, Quaternion rotation)`:
- توضیح: تنظیم همزمان موقعیت و چرخش ترنسفرم.
- نمونه کد:
10. `RotateAround(Vector3 point, Vector3 axis, float angle)`:
- توضیح: چرخش اطراف یک نقطه خاص.
- نمونه کد:
این متدها تنها یک بخش از عملکردهای
#یونیتی #برنامه_نویسی
Transform این ترنسفرم را به عنوان یک کامپوننت در اختیار شیءها قرار میدهد. در زیر، متدهای مهم کلاس Transform توضیح داده شدهاند:1. `Translate(Vector3 translation)`:
- توضیح: افزودن یک ترجمه (تغییر موقعیت) به ترنسفرم.
- نمونه کد:
// تغییر موقعیت به سمت راست 2 واحد
transform.Translate(Vector3.right * 2.0f);
2. `Rotate(Vector3 eulerAngles)`:
- توضیح: افزودن یک چرخش به ترنسفرم با زوایا Euler به واحدهای درجه.
- نمونه کد:
// چرخش به اندازه 45 درجه در اطراف محور Y
transform.Rotate(new Vector3(0.0f, 45.0f, 0.0f));
3. `Scale(Vector3 scale)`:
- توضیح: افزودن یک مقیاس به ترنسفرم.
- نمونه کد:
// تغییر اندازه به 2 برابر در سه محور
transform.Scale(new Vector3(2.0f, 2.0f, 2.0f));
4. `LookAt(Transform target, Vector3 upDirection)`:
- توضیح: چرخش به سمت یک نقطه خاص.
- نمونه کد:
// چرخش به سمت یک شیء خاص
transform.LookAt(targetTransform);
5. `TransformPoint(Vector3 position)`:
- توضیح: تبدیل یک نقطه از فضای محلی به فضای جهانی ترنسفرم.
- نمونه کد:
// تبدیل نقطه از فضای محلی به فضای جهانی
Vector3 localPoint = new Vector3(1.0f, 0.0f, 0.0f);
Vector3 globalPoint = transform.TransformPoint(localPoint);
6. `InverseTransformPoint(Vector3 position)`:
- توضیح: تبدیل یک نقطه از فضای جهانی به فضای محلی ترنسفرم.
- نمونه کد:
// تبدیل نقطه از فضای جهانی به فضای محلی
Vector3 globalPoint = new Vector3(1.0f, 0.0f, 0.0f);
Vector3 localPoint = transform.InverseTransformPoint(globalPoint);
7. `TransformDirection(Vector3 direction)`:
- توضیح: تبدیل یک جهت از فضای محلی به فضای جهانی ترنسفرم.
- نمونه کد:
// تبدیل جهت از فضای محلی به فضای جهانی
Vector3 localDirection = new Vector3(1.0f, 0.0f, 0.0f);
Vector3 globalDirection = transform.TransformDirection(localDirection);
8. `InverseTransformDirection(Vector3 direction)`:
- توضیح: تبدیل یک جهت از فضای جهانی به فضای محلی ترنسفرم.
- نمونه کد:
// تبدیل جهت ا
ز فضای جهانی به فضای محلی
Vector3 globalDirection = new Vector3(1.0f, 0.0f, 0.0f);
Vector3 localDirection = transform.InverseTransformDirection(globalDirection);
9. `SetPositionAndRotation(Vector3 position, Quaternion rotation)`:
- توضیح: تنظیم همزمان موقعیت و چرخش ترنسفرم.
- نمونه کد:
// تنظیم همزمان موقعیت و چرخش
Vector3 newPosition = new Vector3(1.0f, 0.0f, 0.0f);
Quaternion newRotation = Quaternion.Euler(0.0f, 90.0f, 0.0f);
transform.SetPositionAndRotation(newPosition, newRotation);
10. `RotateAround(Vector3 point, Vector3 axis, float angle)`:
- توضیح: چرخش اطراف یک نقطه خاص.
- نمونه کد:
// چرخش اطراف یک نقطه در اطراف محور Y با زاویه 45 درجه
Vector3 rotationPoint = new Vector3(0.0f, 0.0f, 1.0f);
Vector3 rotationAxis = Vector3.up;
float rotationAngle = 45.0f;
transform.RotateAround(rotationPoint, rotationAxis, rotationAngle);
این متدها تنها یک بخش از عملکردهای
Transform در Unity هستند. برای اطلاعات بیشتر، به مستندات Unity مراجعه کنید.#یونیتی #برنامه_نویسی
🔥4👍3
در برنامهنویسی، Enum (مخفف Enumeration) یک نوع داده است که یک مجموعه از ثابتها یا اعضا دارد. Enumها به برنامهنویس این امکان را میدهند که یک گروه از مقادیر مشخص را با نامهای خواناتر و قابل فهم تعریف کنند. در زیر، نحوه تعریف و استفاده از Enumها در C# (زبان برنامهنویسی Unity) توضیح داده شده است:
### تعریف Enum:
یک Enum با استفاده از کلمه کلیدی
در این مثال، یک Enum به نام
### استفاده از Enum:
بعد از تعریف Enum، میتوانید از آن برای تعیین مقدار یک متغیر یا پارامتر استفاده کنید. به عنوان مثال:
حالا
### مقادیر پیشفرض Enum:
هر Enum دارای یک مقدار پیشفرض است. اگر هیچ مقداری به یک Enum نداده شود، مقدار پیشفرض اولین عضو Enum خواهد بود. در مثال قبل، مقدار پیشفرض
### تبدیل Enum به و از int:
Enumها به صورت پیشفرض به int تبدیل میشوند و برعکس. برای تبدیل Enum به int از
### ارتقاء Enum:
میتوانید یک Enum را با مقدارهای دلخواه ارتقاء دهید:
### Flag Enums:
Enumها میتوانند با هم ترکیب شوند و از آنها برای نمایش گزینههای چندگانه (به عنوان یک Flag Enum) استفاده شود:
در این مثال، هر عضو از
استفاده از Enumها به برنامهنویسان این امکان را میدهد که کدهای خود را خواناتر، قابل فهمتر و قابل تغییر بهتری بسازند، به خصوص زمانی که با مجموعهای از مقادیر ثابت سروکار دارند.
#یونیتی #برنامه_نویسی
### تعریف Enum:
یک Enum با استفاده از کلمه کلیدی
enum تعریف میشود:public enum DaysOfWeek
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
در این مثال، یک Enum به نام
DaysOfWeek با هفت مقدار (روزهای هفته) تعریف شده است.### استفاده از Enum:
بعد از تعریف Enum، میتوانید از آن برای تعیین مقدار یک متغیر یا پارامتر استفاده کنید. به عنوان مثال:
DaysOfWeek today = DaysOfWeek.Monday;
حالا
today به عنوان یک متغیر از نوع DaysOfWeek تعریف شده و مقدار آن برابر با Monday است.### مقادیر پیشفرض Enum:
هر Enum دارای یک مقدار پیشفرض است. اگر هیچ مقداری به یک Enum نداده شود، مقدار پیشفرض اولین عضو Enum خواهد بود. در مثال قبل، مقدار پیشفرض
DaysOfWeek برابر با Sunday خواهد بود.### تبدیل Enum به و از int:
Enumها به صورت پیشفرض به int تبدیل میشوند و برعکس. برای تبدیل Enum به int از
Convert.ToInt32() استفاده میشود و برای تبدیل int به Enum از casting عادی استفاده میشود.int dayValue = Convert.ToInt32(DaysOfWeek.Wednesday); // تبدیل Enum به int
DaysOfWeek newDay = (DaysOfWeek)3; // تبدیل int به Enum
### ارتقاء Enum:
میتوانید یک Enum را با مقدارهای دلخواه ارتقاء دهید:
public enum Status
{
Pending = 0,
Approved = 1,
Rejected = 2
}
### Flag Enums:
Enumها میتوانند با هم ترکیب شوند و از آنها برای نمایش گزینههای چندگانه (به عنوان یک Flag Enum) استفاده شود:
[Flags]
public enum Colors
{
None = 0,
Red = 1,
Green = 2,
Blue = 4,
Yellow = Red | Green,
Cyan = Green | Blue,
Magenta = Red | Blue,
White = Red | Green | Blue
}
در این مثال، هر عضو از
Colors با یک مقدار توانی از ۲ (2^n) نمایش داده شده است.استفاده از Enumها به برنامهنویسان این امکان را میدهد که کدهای خود را خواناتر، قابل فهمتر و قابل تغییر بهتری بسازند، به خصوص زمانی که با مجموعهای از مقادیر ثابت سروکار دارند.
#یونیتی #برنامه_نویسی
🔥4👍1🥰1
Start Unity
در برنامهنویسی، Enum (مخفف Enumeration) یک نوع داده است که یک مجموعه از ثابتها یا اعضا دارد. Enumها به برنامهنویس این امکان را میدهند که یک گروه از مقادیر مشخص را با نامهای خواناتر و قابل فهم تعریف کنند. در زیر، نحوه تعریف و استفاده از Enumها در C# (زبان…
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش Enum در اینسپکتور
🔥3
🌟 درود دوستان گرامی!
✨ خوشحالیم که به شما یک منبع جدید از ویدیوهای آموزشی در زمینه برنامهنویسی و تکنولوژی معرفی کنیم. 🚀
👉 Programming studio
🖥 در اینجا، با ویدیوهای جذاب و کاربردی در زمینه برنامهنویسی آشنا میشوید. اگر به دنبال آموزشهایی سریع و موثر هستید، اینجاست که باید باشید!
🌐 لینک کانال: Programming studio
🚀 ما به دنبال ایجاد یک جامعه فعال و ایدهآل هستیم. با ما همراه شوید و تجربیات خود را با ما به اشتراک بگذارید.
🙏 با دوستانتان هم به اشتراک بگذارید و ما را در این مسیر حمایت کنید. با تشکر از حضور شما! ✨
✨ خوشحالیم که به شما یک منبع جدید از ویدیوهای آموزشی در زمینه برنامهنویسی و تکنولوژی معرفی کنیم. 🚀
👉 Programming studio
🖥 در اینجا، با ویدیوهای جذاب و کاربردی در زمینه برنامهنویسی آشنا میشوید. اگر به دنبال آموزشهایی سریع و موثر هستید، اینجاست که باید باشید!
🌐 لینک کانال: Programming studio
🚀 ما به دنبال ایجاد یک جامعه فعال و ایدهآل هستیم. با ما همراه شوید و تجربیات خود را با ما به اشتراک بگذارید.
🙏 با دوستانتان هم به اشتراک بگذارید و ما را در این مسیر حمایت کنید. با تشکر از حضور شما! ✨
❤2
در Unity و برنامهنویسی به زبان C#, متدهای دیباگ (Debugging) به توسعهدهندگان این امکان را میدهند تا به طور موثرتر خطاها را پیدا کنند، اطلاعات اضافی را در طول اجرای برنامه بررسی کنند، و از مراحل اجرای برنامه با استفاده از نقاط توقف (breakpoints) کنترل بهتری داشته باشند. در زیر، متدهای دیباگ مهم در Unity توضیح داده شدهاند:
### 1.
- توضیح: یک پیام عادی به کنسول دیباگ Unity ارسال میکند.
- نمونه کد:
### 2.
- توضیح: یک هشدار به کنسول دیباگ ارسال میکند و پیام به رنگ زرد نمایش داده میشود.
- نمونه کد:
### 3.
- توضیح: یک خطای مهم (error) به کنسول دیباگ ارسال میکند و پیام به رنگ قرمز نمایش داده میشود.
- نمونه کد:
### 4.
- توضیح: یک پیام به کنسول دیباگ ارسال میکند با قابلیت فرمتبندی.
- نمونه کد:
### 5.
- توضیح: یک ادعا (assertion) ایجاد میکند و اگر شرط مورد انتظار برقرار نباشد، یک خطای مهم ارسال میشود.
- نمونه کد:
### 6.
- توضیح: نقطهی توقف را در کد ایجاد میکند و اجرای برنامه را متوقف میکند. معمولاً برای افزایش فهم از حالت برنامه در حال اجرا استفاده میشود.
- نمونه کد:
### 7.
- توضیح: یک خط از نقطهی شروع به نقطهی پایان در صحنه رسم میکند (فقط در حالت اجرای ویرایشگر Unity).
- نمونه کد:
### 8.
- توضیح: یک خط از یک نقطه با جهت دادهشده در صحنه رسم میکند (فقط در حالت اجرای ویرایشگر Unity).
- نمونه کد:
### توجه:
- متدهای دیباگ معمولاً در حالت اجرای ویرایشگر Unity تاثیر دارند و در حالت اجرای برنامههای کامپایل شده توسط Unity، اجرا نمیشوند.
- بهینهتر است که استفاده از متدهای دیباگ را در محیط توسعه و تست انجام دهید و در نسخههای نهایی برنامه آنها را حذف یا غیرفعال کنید.
#یونیتی #برنامه_نویسی
### 1.
Debug.Log(object message):- توضیح: یک پیام عادی به کنسول دیباگ Unity ارسال میکند.
- نمونه کد:
int playerScore = 100;
Debug.Log("Player Score: " + playerScore);
### 2.
Debug.LogWarning(object message):- توضیح: یک هشدار به کنسول دیباگ ارسال میکند و پیام به رنگ زرد نمایش داده میشود.
- نمونه کد:
string playerName = "John Doe";
Debug.LogWarning("Player name not set: " + playerName);
### 3.
Debug.LogError(object message):- توضیح: یک خطای مهم (error) به کنسول دیباگ ارسال میکند و پیام به رنگ قرمز نمایش داده میشود.
- نمونه کد:
if (health <= 0)
{
Debug.LogError("Player is dead!");
}
### 4.
Debug.LogFormat(string format, params object[] args):- توضیح: یک پیام به کنسول دیباگ ارسال میکند با قابلیت فرمتبندی.
- نمونه کد:
string playerName = "Alice";
int playerScore = 150;
Debug.LogFormat("Player: {0}, Score: {1}", playerName, playerScore);
### 5.
Debug.Assert(bool condition):- توضیح: یک ادعا (assertion) ایجاد میکند و اگر شرط مورد انتظار برقرار نباشد، یک خطای مهم ارسال میشود.
- نمونه کد:
int playerHealth = 80;
Debug.Assert(playerHealth > 0, "Player health should be greater than zero.");
### 6.
Debug.Break():- توضیح: نقطهی توقف را در کد ایجاد میکند و اجرای برنامه را متوقف میکند. معمولاً برای افزایش فهم از حالت برنامه در حال اجرا استفاده میشود.
- نمونه کد:
if (enemyCount > 10)
{
Debug.Break(); // توقف در صورت تعداد دشمنها بیشتر از 10 شود.
}
### 7.
Debug.DrawLine(Vector3 start, Vector3 end, Color color = Color.white, float duration = 0.0f):- توضیح: یک خط از نقطهی شروع به نقطهی پایان در صحنه رسم میکند (فقط در حالت اجرای ویرایشگر Unity).
- نمونه کد:
Vector3 startPos = new Vector3(0, 0, 0);
Vector3
endPos = new Vector3(5, 0, 0);
Debug.DrawLine(startPos, endPos, Color.red, 2.0f);
### 8.
Debug.DrawRay(Vector3 start, Vector3 dir, Color color = Color.white, float duration = 0.0f):- توضیح: یک خط از یک نقطه با جهت دادهشده در صحنه رسم میکند (فقط در حالت اجرای ویرایشگر Unity).
- نمونه کد:
Vector3 rayStart = new Vector3(0, 0, 0);
Vector3 rayDirection = new Vector3(0, 1, 0);
Debug.DrawRay(rayStart, rayDirection * 5, Color.green, 2.0f);
### توجه:
- متدهای دیباگ معمولاً در حالت اجرای ویرایشگر Unity تاثیر دارند و در حالت اجرای برنامههای کامپایل شده توسط Unity، اجرا نمیشوند.
- بهینهتر است که استفاده از متدهای دیباگ را در محیط توسعه و تست انجام دهید و در نسخههای نهایی برنامه آنها را حذف یا غیرفعال کنید.
#یونیتی #برنامه_نویسی
🔥5👍3👏1
در Unity، کلاس
### 1.
- توضیح: یک خط با شروع از نقطه
- نمونه کد:
### 2.
- توضیح: یک خط با شروع از نقطه
- نمونه کد:
### 3.
- توضیح: یک مکعب با مرکز
- نمونه کد:
### 4.
- توضیح: یک کره با مرکز
- نمونه کد:
### 5.
- توضیح: یک حلقه (شبکه) به دور یک کره با مرکز
- نمونه کد:
### 6.
- توضیح: مانند
- نمونه کد:
### 7.
- توضیح: مانند
- نمونه کد:
### 8.
- توضیح: یک مش با مکان
- نمونه کد:
### توجه:
- این متدها معمولاً در متدهایی مانند
- این متدها بیشتر در حالت ویرایشگر Unity تاثیر دارند و در حالت اجرای بازی توسط بازیکن، معمولاً تاثیر گزار نیستند.
- از
#یونیتی #برنامه_نویسی
Gizmos از فضای نام UnityEngine برای رسم اشکال و خطوط در صحنهی ویرایشگر Unity استفاده میشود. این امکان به توسعهدهندگان اجازه میدهد تا در حین توسعه و تست بازی، اشیاء گرافیکی را در صحنه ایجاد کرده و موقعیت، جهت یا ابعاد مختلف را بررسی کنند. در زیر، متدهای مهم کلاس Gizmos توضیح داده شدهاند:### 1.
Gizmos.DrawRay(Vector3 from, Vector3 direction):- توضیح: یک خط با شروع از نقطه
from و در جهت direction رسم میکند.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawRay(transform.position, transform.forward * 5.0f);
}
### 2.
Gizmos.DrawLine(Vector3 from, Vector3 to):- توضیح: یک خط با شروع از نقطه
from و پایان در نقطه to رسم میکند.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.blue;
Gizmos.DrawLine(transform.position, transform.position + new Vector3(5.0f, 0.0f, 0.0f));
}
### 3.
Gizmos.DrawCube(Vector3 center, Vector3 size):- توضیح: یک مکعب با مرکز
center و ابعاد size رسم میکند.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.green;
Gizmos.DrawCube(transform.position, new Vector3(2.0f, 2.0f, 2.0f));
}
### 4.
Gizmos.DrawSphere(Vector3 center, float radius):- توضیح: یک کره با مرکز
center و شعاع radius رسم میکند.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawSphere(transform.position, 3.0f);
}
### 5.
Gizmos.DrawWireSphere(Vector3 center, float radius):- توضیح: یک حلقه (شبکه) به دور یک کره با مرکز
center و شعاع radius رسم میکند.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.cyan;
Gizmos.DrawWireSphere(transform.position, 3.0f);
}
### 6.
Gizmos.DrawRay(Vector3 from, Vector3 direction, float length):- توضیح: مانند
DrawRay اما با امکان تعیین طول خط.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.magenta;
Gizmos.DrawRay(transform.position, transform.forward, 5.0f);
}
### 7.
Gizmos.DrawWireCube(Vector3 center, Vector3 size):- توضیح: مانند
DrawCube اما با شبکه خطی به جای رنگ پر کردن.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.white;
Gizmos.DrawWireCube(transform.position, new Vector3(2.0f, 2.0f, 2.0f));
}
### 8.
Gizmos.DrawMesh(Mesh mesh, Vector3 position, Quaternion rotation):- توضیح: یک مش با مکان
position و چرخش rotation رسم میکند.- نمونه کد:
void OnDrawGizmos()
{
Gizmos.color = Color.gray;
Gizmos.DrawMesh(mesh, transform.position, transform.rotation);
}
### توجه:
- این متدها معمولاً در متدهایی مانند
OnDrawGizmos یا OnDrawGizmosSelected در اسکریپتهای MonoBehaviour استفاده میشوند.- این متدها بیشتر در حالت ویرایشگر Unity تاثیر دارند و در حالت اجرای بازی توسط بازیکن، معمولاً تاثیر گزار نیستند.
- از
Gizmos.color میتوانید برای تعیین رنگ اشکال مورد استفاده در متد مربوطه استفاده کنید.#یونیتی #برنامه_نویسی
🔥8👍2🥰1
در Unity، کلاس
### 1.
- توضیح: بارگذاری یک صحنه جدید با نام
- نمونه کد:
### 2.
- توضیح: خروج از برنامه در حال اجرا.
- نمونه کد:
### 3.
- توضیح: یک خاصیت (property) بولین که نشان میدهد برنامه در حالت ویرایشگر (Editor) است یا در حالت اجرای بازی.
- نمونه کد:
### 4.
- توضیح: یک خاصیت (property) که نشان میدهد برنامه در چه پلتفرمی اجرا میشود (مثل Windows، macOS، iOS و ...).
- نمونه کد:
### 5.
- توضیح: یک خاصیت (property) که نسخه برنامه را نمایش میدهد.
- نمونه کد:
### 6.
- توضیح: یک خاصیت (property) که مسیر دایرکتوری
- نمونه کد:
### 7.
- توضیح: یک خاصیت (property) که مسیر دایرکتوری قابل دسترس برای ذخیره و بازیابی دادهها در طول زمان اجرا را نشان میدهد.
- نمونه کد:
### 8.
- توضیح: یک خاصیت (property) که نشان میدهد برنامه در چه پلتفرمی اجرا میشود (مثل Windows، macOS، iOS و ...).
- نمونه کد:
### 9.
- توضیح: یک خاصیت (property) که وضعیت اتصال به اینترنت را نشان میدهد.
- مقادیر ممکن:
-
-
-
- نمونه کد:
### 10.
- توضیح: یک خاصیت (property) که مشخص میکند آیا برنامه در حالت زمینه (بکگراند) اجرا میشود یا خیر.
- نمونه کد:
این متدها و خصوصیات توسط توسعهدهندگان Unity برای برنامه نویسی و ارتباط با وضعیت برنامه به کار میروند.
#یونیتی #برنامه_نویسی
Application از فضای نام UnityEngine استفاده میشود و اطلاعاتی در مورد وضعیت و اطلاعات برنامه فعلی فراهم میکند. در زیر، تعدادی از متدهای مهم این کلاس توضیح داده شدهاند:### 1.
Application.LoadLevel(string sceneName) (از Unity 5.3 به بعد به SceneManager.LoadScene تغییر نام یافته است):- توضیح: بارگذاری یک صحنه جدید با نام
sceneName.- نمونه کد:
using UnityEngine.SceneManagement;
// بارگذاری صحنه با نام "Level2"
SceneManager.LoadScene("Level2");
### 2.
Application.Quit():- توضیح: خروج از برنامه در حال اجرا.
- نمونه کد:
// خروج از برنامه
Application.Quit();
### 3.
Application.isEditor:- توضیح: یک خاصیت (property) بولین که نشان میدهد برنامه در حالت ویرایشگر (Editor) است یا در حالت اجرای بازی.
- نمونه کد:
if (Application.isEditor)
{
Debug.Log("در حالت ویرایشگر");
}
### 4.
Application.platform:- توضیح: یک خاصیت (property) که نشان میدهد برنامه در چه پلتفرمی اجرا میشود (مثل Windows، macOS، iOS و ...).
- نمونه کد:
RuntimePlatform platform = Application.platform;
Debug.Log("پلتفرم: " + platform);
### 5.
Application.version:- توضیح: یک خاصیت (property) که نسخه برنامه را نمایش میدهد.
- نمونه کد:
string version = Application.version;
Debug.Log("نسخه برنامه: " + version);
### 6.
Application.dataPath:- توضیح: یک خاصیت (property) که مسیر دایرکتوری
Assets در پروژه Unity را نشان میدهد.- نمونه کد:
string dataPath = Application.dataPath;
Debug.Log("مسیر دایرکتوری Assets: " + dataPath);
### 7.
Application.persistentDataPath:- توضیح: یک خاصیت (property) که مسیر دایرکتوری قابل دسترس برای ذخیره و بازیابی دادهها در طول زمان اجرا را نشان میدهد.
- نمونه کد:
string persistentDataPath = Application.persistentDataPath;
Debug.Log("مسیر دایرکتوری قابل دسترس: " + persistentDataPath);
### 8.
Application.platform:- توضیح: یک خاصیت (property) که نشان میدهد برنامه در چه پلتفرمی اجرا میشود (مثل Windows، macOS، iOS و ...).
- نمونه کد:
RuntimePlatform platform = Application.platform;
Debug.Log("پلتفرم: " + platform);
### 9.
Application.internetReachability:- توضیح: یک خاصیت (property) که وضعیت اتصال به اینترنت را نشان میدهد.
- مقادیر ممکن:
-
NetworkReachability.NotReachable: عدم دسترسی به اینترنت.-
NetworkReachability.ReachableViaCarrierDataNetwork: دسترسی از طریق شبکه داده موبایل.-
NetworkReachability.ReachableViaLocalAreaNetwork: دسترسی از طریق شبکه محلی.- نمونه کد:
NetworkReachability reachability = Application.internetReachability;
Debug.Log("وضعیت اتصال به اینترنت: " + reachability);
### 10.
Application.runInBackground:- توضیح: یک خاصیت (property) که مشخص میکند آیا برنامه در حالت زمینه (بکگراند) اجرا میشود یا خیر.
- نمونه کد:
bool runInBackground = Application.runInBackground;
Debug.Log("اجرای در زمینه: " + runInBackground);
این متدها و خصوصیات توسط توسعهدهندگان Unity برای برنامه نویسی و ارتباط با وضعیت برنامه به کار میروند.
#یونیتی #برنامه_نویسی
🔥6👍1
🔊 منبع رایگان آهنگها و افکتهای صوتی برای پروژههای بازی
اگر به دنبال منابع صوتی برای بهبود تجربه کاربری و صداگذاری پروژههای بازی خود هستید، سایت Sound Jay یک گنجینه رایگان از آهنگها و افکتهای صوتی را برای شما فراهم کرده است. این منابع با کیفیت بالا و دستهبندیهای متنوع، از جمله موسیقی، صداهای محیط، و افکتهای ویژه، میتوانند به پروژههای بازی شما زندگی و جذابیت بیافزایند.
🔗 لینک سایت: Sound Jay
📄 شرایط استفاده:
قبل از استفاده از منابع صوتی، حتماً شرایط استفاده را مطالعه کنید و با آنها موافقت نمایید. به خصوص، ممکن است نیاز باشد که نام صاحب امتیاز یا لینک به سایت مرجع را در پروژههای خود ذکر کنید.
🎧 استفاده کنید و لذت ببرید!
اگر به دنبال منابع صوتی برای بهبود تجربه کاربری و صداگذاری پروژههای بازی خود هستید، سایت Sound Jay یک گنجینه رایگان از آهنگها و افکتهای صوتی را برای شما فراهم کرده است. این منابع با کیفیت بالا و دستهبندیهای متنوع، از جمله موسیقی، صداهای محیط، و افکتهای ویژه، میتوانند به پروژههای بازی شما زندگی و جذابیت بیافزایند.
🔗 لینک سایت: Sound Jay
📄 شرایط استفاده:
قبل از استفاده از منابع صوتی، حتماً شرایط استفاده را مطالعه کنید و با آنها موافقت نمایید. به خصوص، ممکن است نیاز باشد که نام صاحب امتیاز یا لینک به سایت مرجع را در پروژههای خود ذکر کنید.
🎧 استفاده کنید و لذت ببرید!
🔥4👍1🤔1
🚀 آموزش گیت از مقدماتی تا پیشرفته
توضیح:
در این دوره گیت، از مباحث ابتدایی تا مفاهیم پیشرفته و کاربردهای عملی آن پوشش داده شده است. شما با استفاده از لینک زیر میتوانید به تمامی ویدئوها دسترسی پیدا کنید:
🔗لینک دوره گیت
مباحثی که در دوره آموزش داده میشوند:
1. مقدمهای به سیستم کنترل نسخه و نیازمندیهای گیت📚
2. ایجاد یک مخزن (Repository) جدید🏗
3. اضافه کردن فایلها و تغییرات به مخزن📝
4. استفاده از شاخهها (Branches) و ادغام (Merge)🌲
5. حل خطاها و کنترل وضعیت (Status) فایلها🛠
6. مدیریت کنندهها و همکاران (Collaborators) 👥
7. استفاده از گیتهاب (GitHub) برای همکاری و اشتراکگذاری پروژه🤝
با این دوره، شما قدرتمندترین ابزار کنترل نسخه را به عنوان یک توسعهدهنده خواهید فهمید و میتوانید به صورت بهتری با تیم خود همکاری کنید.
توضیح:
در این دوره گیت، از مباحث ابتدایی تا مفاهیم پیشرفته و کاربردهای عملی آن پوشش داده شده است. شما با استفاده از لینک زیر میتوانید به تمامی ویدئوها دسترسی پیدا کنید:
🔗لینک دوره گیت
مباحثی که در دوره آموزش داده میشوند:
1. مقدمهای به سیستم کنترل نسخه و نیازمندیهای گیت📚
2. ایجاد یک مخزن (Repository) جدید🏗
3. اضافه کردن فایلها و تغییرات به مخزن📝
4. استفاده از شاخهها (Branches) و ادغام (Merge)🌲
5. حل خطاها و کنترل وضعیت (Status) فایلها🛠
6. مدیریت کنندهها و همکاران (Collaborators) 👥
7. استفاده از گیتهاب (GitHub) برای همکاری و اشتراکگذاری پروژه🤝
با این دوره، شما قدرتمندترین ابزار کنترل نسخه را به عنوان یک توسعهدهنده خواهید فهمید و میتوانید به صورت بهتری با تیم خود همکاری کنید.
🔥7👍2
در Unity، کلاس
### 1.
- توضیح: یک خاصیت (property) که زمانی که طول یک چرخه اجرای بازی (frame) به ثانیه میشود را نشان میدهد. این مقدار معمولاً برای حرکت صاف و تطبیقی بر اساس فریمها استفاده میشود.
- نمونه کد:
### 2.
- توضیح: یک خاصیت (property) که زمان مشخص شده برای هر چرخه اجرای بازی در حالت فیکس (Fixed Update) را نشان میدهد.
- نمونه کد:
### 3.
- توضیح: یک خاصیت (property) که مقیاس زمانی را کنترل میکند. مقدار 1 برابر با زمان واقعی است و مقادیر کمتر از 1 (مانند 0.5) باعث کندتر شدن بازی و مقادیر بیشتر از 1 باعث سریعتر شدن بازی میشوند.
- نمونه کد:
### 4.
- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع بازی را نشان میدهد.
- نمونه کد:
### 5.
- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع بازی را نشان میدهد، بدون در نظر گرفتن مقیاس زمانی (
- نمونه کد:
### 6.
- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع بازی را در چرخههای اجرای بازی محدود به حالت Fixed Update نشان میدهد.
- نمونه کد:
### 7.
- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع سیستم (از زمان روشن بودن سیستم) را نشان میدهد.
- نمونه کد:
### توجه:
- این متدها و خصوصیات بیشتر در متدهای
-
-
ً برای ایجاد اثرات مثل ایستادن زمان یا افزایش سرعت بازی استفاده میشود.
#یونیتی #برنامه_نویسی
Time از فضای نام UnityEngine استفاده میشود و اطلاعات مربوط به زمان اجرای بازی را فراهم میکند. این کلاس شامل متدها و خصوصیاتی است که به توسعهدهندگان این امکان را میدهد تا زمان اجرای بازی را بسنجند و کنترل کنند. در زیر، تعدادی از متدها و خصوصیات مهم این کلاس توضیح داده شدهاند:### 1.
Time.deltaTime:- توضیح: یک خاصیت (property) که زمانی که طول یک چرخه اجرای بازی (frame) به ثانیه میشود را نشان میدهد. این مقدار معمولاً برای حرکت صاف و تطبیقی بر اساس فریمها استفاده میشود.
- نمونه کد:
void Update()
{
float movementSpeed = 5.0f;
transform.Translate(Vector3.forward * movementSpeed * Time.deltaTime);
}
### 2.
Time.fixedDeltaTime:- توضیح: یک خاصیت (property) که زمان مشخص شده برای هر چرخه اجرای بازی در حالت فیکس (Fixed Update) را نشان میدهد.
- نمونه کد:
void FixedUpdate()
{
float rotationSpeed = 90.0f;
transform.Rotate(Vector3.up * rotationSpeed * Time.fixedDeltaTime);
}
### 3.
Time.timeScale:- توضیح: یک خاصیت (property) که مقیاس زمانی را کنترل میکند. مقدار 1 برابر با زمان واقعی است و مقادیر کمتر از 1 (مانند 0.5) باعث کندتر شدن بازی و مقادیر بیشتر از 1 باعث سریعتر شدن بازی میشوند.
- نمونه کد:
void PauseGame()
{
Time.timeScale = 0.0f; // بازی را متوقف کن
}
void ResumeGame()
{
Time.timeScale = 1.0f; // ادامه اجرای بازی
}
### 4.
Time.time:- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع بازی را نشان میدهد.
- نمونه کد:
void Update()
{
float elapsedTime = Time.time; // زمان گذشته از شروع بازی
Debug.Log("Elapsed Time: " + elapsedTime);
}
### 5.
Time.unscaledTime:- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع بازی را نشان میدهد، بدون در نظر گرفتن مقیاس زمانی (
Time.timeScale).- نمونه کد:
void Update()
{
float unscaledTime = Time.unscaledTime; // زمان گذشته بدون در نظر گرفتن مقیاس زمانی
Debug.Log("Elapsed Time (Unscaled): " + unscaledTime);
}
### 6.
Time.fixedTime:- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع بازی را در چرخههای اجرای بازی محدود به حالت Fixed Update نشان میدهد.
- نمونه کد:
void FixedUpdate()
{
float fixedTime = Time.fixedTime; // زمان گذشته از شروع بازی در حالت Fixed Update
Debug.Log("Fixed Time: " + fixedTime);
}
### 7.
Time.realtimeSinceStartup:- توضیح: یک خاصیت (property) که میزان زمان گذشته از زمان شروع سیستم (از زمان روشن بودن سیستم) را نشان میدهد.
- نمونه کد:
void Start()
{
float realTime = Time.realtimeSinceStartup; // زمان گذشته از شروع سیستم
Debug.Log("Real Time Since Startup: " + realTime);
}
### توجه:
- این متدها و خصوصیات بیشتر در متدهای
Update و FixedUpdate از MonoBehaviour به کار میروند.-
Time.deltaTime و Time.fixedDeltaTime معمولاً برای جلوگیری از نوسانات حرکت و اجسام در بازی در هر نرخ فریم استفاده میشوند.-
Time.timeScale معمولاً برای ایجاد اثرات مثل ایستادن زمان یا افزایش سرعت بازی استفاده میشود.
#یونیتی #برنامه_نویسی
🔥5👍2👏1
در Unity، کلاس
### 1.
- توضیح: این متد برای بارگذاری یک صحنه جدید با نام مشخص شده استفاده میشود.
- نمونه کد:
### 2.
- توضیح: این متد برای بارگذاری یک صحنه بر اساس ایندکس ساختار صحنهها استفاده میشود. این ایندکس به ترتیب درخت صحنهها در پروژه Unity است.
- نمونه کد:
### 3.
- توضیح: این متد به صورت ناهمزمان (asynchronously) یک صحنه جدید را بارگذاری میکند، که به منظور جلوگیری از توقف اجرای بازی در حین بارگذاری صحنه استفاده میشود.
- نمونه کد:
### 4.
- توضیح: همانند متد قبلی، اما با استفاده از ایندکس صحنه برای بارگذاری.
- نمونه کد:
### 5.
- توضیح: این متد صحنهای که در حال حاضر فعال است را بازمیگرداند.
- نمونه کد:
### 6.
- توضیح: این متد اطلاعات یک صحنه را بر اساس نام آن بازمیگرداند، اما بدون بارگذاری آن.
- نمونه کد:
### 7.
- توضیح: این متد اطلاعات یک صحنه را بر اساس ایندکس ساختار صحنهها بازمیگرداند، اما بدون بارگذاری آن.
- نمونه کد:
### 8.
- توضیح: این متد برای بارگذاری یک صحنه با حالت خاص (مثل اضافه کردن به صحنه فعلی یا جایگزین کردن آن) استفاده میشود.
- نمونه کد:
### 9.
- توضیح: این متد به ترکیب (ادغام) دو صحنه بازی کمک میکند.
- نمونه کد:
### 10.
- توضیح: این متد برای خارج کردن یک صحنه از حافظه (آنرا آزاد کردن) استفاده میشود.
- نمونه کد:
### توجه:
- برخی از متدها و مدیریتها بر اساس اطلاعات ناهمزمان (Async) عمل میکنند و برای اجتناب از توقف اجرای بازی در حین عملیات مهم است.
#یونیتی #برنامه_نویسی
SceneManager جهت مدیریت صحنهها (scenes) استفاده میشود.### 1.
SceneManager.LoadScene(string sceneName):- توضیح: این متد برای بارگذاری یک صحنه جدید با نام مشخص شده استفاده میشود.
- نمونه کد:
using UnityEngine.SceneManagement;
// بارگذاری یک صحنه با نام "Level2"
SceneManager.LoadScene("Level2");
### 2.
SceneManager.LoadScene(int sceneBuildIndex):- توضیح: این متد برای بارگذاری یک صحنه بر اساس ایندکس ساختار صحنهها استفاده میشود. این ایندکس به ترتیب درخت صحنهها در پروژه Unity است.
- نمونه کد:
using UnityEngine.SceneManagement;
// بارگذاری صحنه با ایندکس 1
SceneManager.LoadScene(1);
### 3.
SceneManager.LoadSceneAsync(string sceneName):- توضیح: این متد به صورت ناهمزمان (asynchronously) یک صحنه جدید را بارگذاری میکند، که به منظور جلوگیری از توقف اجرای بازی در حین بارگذاری صحنه استفاده میشود.
- نمونه کد:
using UnityEngine.SceneManagement;
// بارگذاری یک صحنه به صورت ناهمزمان
StartCoroutine(LoadSceneAsync("Level2"));
IEnumerator LoadSceneAsync(string sceneName)
{
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName);
while (!asyncLoad.isDone)
{
float progress = Mathf.Clamp01(asyncLoad.progress / 0.9f);
Debug.Log("Loading progress: " + progress * 100f + "%");
yield return null;
}
}
### 4.
SceneManager.LoadSceneAsync(int sceneBuildIndex):- توضیح: همانند متد قبلی، اما با استفاده از ایندکس صحنه برای بارگذاری.
- نمونه کد:
using UnityEngine.SceneManagement;
// بارگذاری صحنه به صورت ناهمزمان با استفاده از ایندکس 1
StartCoroutine(LoadSceneAsync(1));
### 5.
SceneManager.GetActiveScene():- توضیح: این متد صحنهای که در حال حاضر فعال است را بازمیگرداند.
- نمونه کد:
using UnityEngine.SceneManagement;
// دریافت صحنهای که در حال حاضر فعال است
Scene currentScene = SceneManager.GetActiveScene();
Debug.Log("Active Scene name: " + currentScene.name);
### 6.
SceneManager.GetSceneByName(string sceneName):- توضیح: این متد اطلاعات یک صحنه را بر اساس نام آن بازمیگرداند، اما بدون بارگذاری آن.
- نمونه کد:
using UnityEngine.SceneManagement;
// دریافت اطلاعات یک صحنه بر اساس نام
Scene targetScene = SceneManager.GetSceneByName("Level2");
### 7.
SceneManager.GetSceneByBuildIndex(int buildIndex):- توضیح: این متد اطلاعات یک صحنه را بر اساس ایندکس ساختار صحنهها بازمیگرداند، اما بدون بارگذاری آن.
- نمونه کد:
using UnityEngine.SceneManagement;
// دریافت اطلاعات یک صحنه بر اساس ایندکس
Scene targetScene = SceneManager.GetSceneByBuildIndex(1);
### 8.
SceneManager.LoadScene(string sceneName, LoadSceneMode mode):- توضیح: این متد برای بارگذاری یک صحنه با حالت خاص (مثل اضافه کردن به صحنه فعلی یا جایگزین کردن آن) استفاده میشود.
- نمونه کد:
using UnityEngine.SceneManagement;
// بارگذاری یک صحنه و جایگزین کردن صحنه فعلی
SceneManager.LoadScene("Level2", LoadSceneMode.Single);
### 9.
SceneManager.MergeScenes(Scene sourceScene, Scene destinationScene):- توضیح: این متد به ترکیب (ادغام) دو صحنه بازی کمک میکند.
- نمونه کد:
using UnityEngine.SceneManagement;
// ادغام دو صحنه
Scene sourceScene = SceneManager.GetSceneByName("SourceScene");
Scene destinationScene = SceneManager.GetSceneByName("DestinationScene");
SceneManager
.MergeScenes(sourceScene, destinationScene);
### 10.
SceneManager.UnloadScene(string sceneName):- توضیح: این متد برای خارج کردن یک صحنه از حافظه (آنرا آزاد کردن) استفاده میشود.
- نمونه کد:
using UnityEngine.SceneManagement;
// خارج کردن یک صحنه از حافظه
SceneManager.UnloadScene("Level1");
### توجه:
- برخی از متدها و مدیریتها بر اساس اطلاعات ناهمزمان (Async) عمل میکنند و برای اجتناب از توقف اجرای بازی در حین عملیات مهم است.
#یونیتی #برنامه_نویسی
🔥10
در یونیتی Event Methods یا متدهای رویدادها مربوط به چرخه حیات اجزای MonoBehaviour هستند. این متدها در طول زندگی یک اجزا (مثل یک شیء در بازی) فراخوانی میشوند. برخی از متدهای رویدادها مهم شامل
### 1.
- توضیح: این متد فراخوانی میشود هنگامی که اجزا (مثل یک شیء) ایجاد میشوند. این متد معمولاً برای اولیهسازی منابع و اطلاعات مورد نیاز قبل از شروع بازی استفاده میشود.
- نمونه کد:
### 2.
- توضیح: این متد فراخوانی میشود در هنگام شروع اجرای بازی و پس از اجرای متد
- نمونه کد:
### 3.
- توضیح: این متد در هر چرخه فریم (frame) فراخوانی میشود. این متد برای اعمال تغییرات مربوط به لحظه به لحظه (مثل حرکت شیء) استفاده میشود.
- نمونه کد:
### 4.
- توضیح: این متد در هر چرخه فیکس شده (fixed frame) فراخوانی میشود. این متد برای اعمال تغییرات مربوط به فیزیک (مثل حرکت با اصطکاک) که ممکن است در هر فریم متفاوت باشند، استفاده میشود.
- نمونه کد:
### 5.
- توضیح: این متد در هر چرخه فریم بعد از اجرای متدهای
- نمونه کد:
### 6.
- توضیح: این متد در هنگام از بین رفتن اجزاء (مثل حذف یک شیء از صحنه) فراخوانی میشود. این متد برای اجرای کد مرتبط با تمیز کردن منابع و حالتها مفید است.
- نمونه کد:
این متدها بخشی از چرخه حیات اجزاء در Unity را تشکیل میدهند و به توسعهدهندگان این امکان را میدهند که کدهای مربوط به اجزاء را در لحظات مختلف اجرا کنند.
#یونیتی #برنامه_نویسی
Awake`، `Start`، `Update`، `FixedUpdate`، `LateUpdate و OnDestroy هستند.### 1.
Awake:- توضیح: این متد فراخوانی میشود هنگامی که اجزا (مثل یک شیء) ایجاد میشوند. این متد معمولاً برای اولیهسازی منابع و اطلاعات مورد نیاز قبل از شروع بازی استفاده میشود.
- نمونه کد:
void Awake()
{
// اولیهسازی منابع و اطلاعات
}
### 2.
Start:- توضیح: این متد فراخوانی میشود در هنگام شروع اجرای بازی و پس از اجرای متد
Awake. این متد برای اجرای کدهایی که به منابع دیگری (مثل اجزا دیگر یا دستورهای شروعی) وابسته هستند، مفید است.- نمونه کد:
void Start()
{
// کدهای شروعی پس از اجرای Awake
}
### 3.
Update:- توضیح: این متد در هر چرخه فریم (frame) فراخوانی میشود. این متد برای اعمال تغییرات مربوط به لحظه به لحظه (مثل حرکت شیء) استفاده میشود.
- نمونه کد:
void Update()
{
// کدهای اعمال تغییرات در هر چرخه فریم
}
### 4.
FixedUpdate:- توضیح: این متد در هر چرخه فیکس شده (fixed frame) فراخوانی میشود. این متد برای اعمال تغییرات مربوط به فیزیک (مثل حرکت با اصطکاک) که ممکن است در هر فریم متفاوت باشند، استفاده میشود.
- نمونه کد:
void FixedUpdate()
{
// کدهای اعمال تغییرات در هر چرخه فیکس شده
}
### 5.
LateUpdate:- توضیح: این متد در هر چرخه فریم بعد از اجرای متدهای
Update فراخوانی میشود. این متد معمولاً برای اعمال تغییراتی استفاده میشود که به اطلاعات محاسباتی مربوط به فریم فعلی وابستهاند.- نمونه کد:
void LateUpdate()
{
// کدهای اعمال تغییرات پس از اجرای Update
}
### 6.
OnDestroy:- توضیح: این متد در هنگام از بین رفتن اجزاء (مثل حذف یک شیء از صحنه) فراخوانی میشود. این متد برای اجرای کد مرتبط با تمیز کردن منابع و حالتها مفید است.
- نمونه کد:
void OnDestroy()
{
// کدهای تمیز کردن منابع و اطلاعات
}
این متدها بخشی از چرخه حیات اجزاء در Unity را تشکیل میدهند و به توسعهدهندگان این امکان را میدهند که کدهای مربوط به اجزاء را در لحظات مختلف اجرا کنند.
#یونیتی #برنامه_نویسی
متدهای Callback در Unity معمولاً به متدهایی اطلاق میشود که توسط سیستم یا اجزای دیگر فراخوانی میشوند. این متدها به توسعهدهندگان این امکان را میدهند که بر اساس وقایع خاصی که در طول اجرای بازی رخ میدهند، عملیات مشخصی انجام دهند. در زیر، توضیحاتی در مورد چند متد Callback مهم در Unity آورده شده است:
### 1.
- توضیح: این متد زمانی صدا زده میشود که اجزا (مثل یک اسکریپت) فعال شوند. این ایدهآل برای اجرای کدهایی که باید زمانی اجرا شوند که یک اجزا (مثل یک اسکریپت) فعال شود، مناسب است.
- نمونه کد:
### 2.
- توضیح: این متد زمانی صدا زده میشود که اجزا غیرفعال میشوند. این ایدهآل برای تمیز کردن یا انجام عملیاتی قبل از غیرفعال شدن یک اجزا است.
- نمونه کد:
### 3.
- توضیح: این متد زمانی صدا زده میشود که اجزا (مثل یک اسکریپت) در ویرایشگر Unity تغییر کرده و نیاز به اعتبارسنجی دارند. معمولاً برای اطمینان از صحت دادهها و اعمال تغییرات مرتبط با آنها استفاده میشود.
- نمونه کد:
### 4.
- توضیح: این متد زمانی صدا زده میشود که کاربر بازی را قبل از خروج از بازی انجام دهد. این متد معمولاً برای انجام تمیزکارها (مثل ذخیره اطلاعات) در هنگام خروج از بازی استفاده میشود.
- نمونه کد:
### 5.
- توضیح: این متد زمانی صدا زده میشود که برنامه فوکوس میشود یا از فوکوس خارج میشود. معمولاً برای مدیریت عملکرد و اعمال تغییراتی که ممکن است با ورود یا خروج از فوکوس مرتبط باشند استفاده میشود.
- نمونه کد:
### 6.
- توضیح: این متد زمانی صدا زده میشود که برنامه وارد حالت توقف (Pause) میشود. معمولاً برای مدیریت عملکرد و اعمال تغییرات مرتبط با ورود یا خروج از حالت توقف مورد استفاده قرار میگیرد.
- نمونه کد:
این متدها برخی از Callback Methods مهم در Unity هستند و میتوانند برای ایجاد تعاملات مختلف در طول اجرای بازی مورد استفاده قرار گیرند.
#یونیتی #برنامه_نویسی
### 1.
OnEnable:- توضیح: این متد زمانی صدا زده میشود که اجزا (مثل یک اسکریپت) فعال شوند. این ایدهآل برای اجرای کدهایی که باید زمانی اجرا شوند که یک اجزا (مثل یک اسکریپت) فعال شود، مناسب است.
- نمونه کد:
void OnEnable()
{
// کدهای اجرا شده هنگامی که اجزا فعال میشوند
}
### 2.
OnDisable:- توضیح: این متد زمانی صدا زده میشود که اجزا غیرفعال میشوند. این ایدهآل برای تمیز کردن یا انجام عملیاتی قبل از غیرفعال شدن یک اجزا است.
- نمونه کد:
void OnDisable()
{
// کدهای اجرا شده هنگامی که اجزا غیرفعال میشوند
}
### 3.
OnValidate:- توضیح: این متد زمانی صدا زده میشود که اجزا (مثل یک اسکریپت) در ویرایشگر Unity تغییر کرده و نیاز به اعتبارسنجی دارند. معمولاً برای اطمینان از صحت دادهها و اعمال تغییرات مرتبط با آنها استفاده میشود.
- نمونه کد:
void OnValidate()
{
// کدهای اجرا شده هنگام اعتبارسنجی اجزا
}
### 4.
OnApplicationQuit:- توضیح: این متد زمانی صدا زده میشود که کاربر بازی را قبل از خروج از بازی انجام دهد. این متد معمولاً برای انجام تمیزکارها (مثل ذخیره اطلاعات) در هنگام خروج از بازی استفاده میشود.
- نمونه کد:
void OnApplicationQuit()
{
// کدهای اجرا شده هنگام خروج از بازی
}
### 5.
OnApplicationFocus:- توضیح: این متد زمانی صدا زده میشود که برنامه فوکوس میشود یا از فوکوس خارج میشود. معمولاً برای مدیریت عملکرد و اعمال تغییراتی که ممکن است با ورود یا خروج از فوکوس مرتبط باشند استفاده میشود.
- نمونه کد:
void OnApplicationFocus(bool hasFocus)
{
if (hasFocus)
{
// کدهای اجرا شده هنگامی که برنامه فوکوس دارد
}
else
{
// کدهای اجرا شده هنگامی که برنامه از فوکوس خارج میشود
}
}
### 6.
OnApplicationPause:- توضیح: این متد زمانی صدا زده میشود که برنامه وارد حالت توقف (Pause) میشود. معمولاً برای مدیریت عملکرد و اعمال تغییرات مرتبط با ورود یا خروج از حالت توقف مورد استفاده قرار میگیرد.
- نمونه کد:
void OnApplicationPause(bool isPaused)
{
if (isPaused)
{
// کدهای اجرا شده هنگامی که برنامه وارد حالت توقف میشود
}
else
{
// کدهای اجرا شده هنگامی که برنامه از حالت توقف خارج میشود
}
}
این متدها برخی از Callback Methods مهم در Unity هستند و میتوانند برای ایجاد تعاملات مختلف در طول اجرای بازی مورد استفاده قرار گیرند.
#یونیتی #برنامه_نویسی
👍3🔥3👏2👌1
درود دوستان عزیز، امیدوارم حالتون عالی باشه.
به درخواست یکی از دوستان عزیز، قصد دارم توضیحاتی در مورد الگوهای طراحی مهم در یونیتی ارائه بدم و به تدریج مثالهایی رو هم ارائه بدم. پس اگر میخواهید در پروژههای بزرگتر با مشکل مواجه نشوید، این پستها را با دقت مطالعه کنید.
دیزاین پترنها در Unity به عنوان الگوهای معماری برنامهنویسی استفاده میشوند که به توسعهدهندگان کمک میکنند تا کد بهتری بنویسند و ساختار بهتری برای پروژههای خود ایجاد کنند. در زیر به برخی از اصطلاحات و دیزاین پترنهای معروف در Unity اشاره میشود:
1. Singleton Pattern (الگوی تک نمونه):
این الگو به توسعهدهندگان کمک میکند تا یک نمونه از یک کلاس را فقط یک بار ایجاد کنند و سپس از این نمونه به عنوان نقطه دسترسی به آن کلاس استفاده کنند. این الگو معمولاً برای مواردی مانند مدیریت دادههای عمومی (مانند مدیر صدا یا مدیر اسکریپت) استفاده میشود.
2. Observer Pattern (الگوی مشاهدهگر):
این الگو به توسعهدهندگان این امکان را میدهد که یک مکانیزم اعلانیه (معمولاً یک رویداد) برای اشتراک اطلاعات بین اشیا ایجاد کنند. معمولاً این الگو برای پاسخ به رویدادها و واکنش به تغییرات در بازی استفاده میشود.
3. Factory Pattern (الگوی کارخانه):
این الگو به توسعهدهندگان این امکان را میدهد که ایجاد شیء را از پیادهسازی جداگانهای که برای ساختن شیء مورد نظر مسئول است، جدا کنند. این الگو برای ایجاد نمونههای مختلف اشیاء بر اساس پارامترهای ورودی مورد استفاده قرار میگیرد.
4. State Pattern (الگوی وضعیت):
این الگو به توسعهدهندگان کمک میکند تا رفتارهای مختلف یک شیء را در وضعیتهای مختلف تعریف کنند. به این ترتیب، هرگاه وضعیت یک شیء تغییر کند، رفتار آن نیز تغییر میکند.
اینها تنها چند نمونه از دیزاین پترنهایی هستند که میتوانید در Unity استفاده کنید. بسته به نیازهای پروژه خود، ممکن است به دیگر الگوها و رویکردهای معماری هم پی ببرید.
#یونیتی #برنامه_نویسی
به درخواست یکی از دوستان عزیز، قصد دارم توضیحاتی در مورد الگوهای طراحی مهم در یونیتی ارائه بدم و به تدریج مثالهایی رو هم ارائه بدم. پس اگر میخواهید در پروژههای بزرگتر با مشکل مواجه نشوید، این پستها را با دقت مطالعه کنید.
دیزاین پترنها در Unity به عنوان الگوهای معماری برنامهنویسی استفاده میشوند که به توسعهدهندگان کمک میکنند تا کد بهتری بنویسند و ساختار بهتری برای پروژههای خود ایجاد کنند. در زیر به برخی از اصطلاحات و دیزاین پترنهای معروف در Unity اشاره میشود:
1. Singleton Pattern (الگوی تک نمونه):
این الگو به توسعهدهندگان کمک میکند تا یک نمونه از یک کلاس را فقط یک بار ایجاد کنند و سپس از این نمونه به عنوان نقطه دسترسی به آن کلاس استفاده کنند. این الگو معمولاً برای مواردی مانند مدیریت دادههای عمومی (مانند مدیر صدا یا مدیر اسکریپت) استفاده میشود.
2. Observer Pattern (الگوی مشاهدهگر):
این الگو به توسعهدهندگان این امکان را میدهد که یک مکانیزم اعلانیه (معمولاً یک رویداد) برای اشتراک اطلاعات بین اشیا ایجاد کنند. معمولاً این الگو برای پاسخ به رویدادها و واکنش به تغییرات در بازی استفاده میشود.
3. Factory Pattern (الگوی کارخانه):
این الگو به توسعهدهندگان این امکان را میدهد که ایجاد شیء را از پیادهسازی جداگانهای که برای ساختن شیء مورد نظر مسئول است، جدا کنند. این الگو برای ایجاد نمونههای مختلف اشیاء بر اساس پارامترهای ورودی مورد استفاده قرار میگیرد.
4. State Pattern (الگوی وضعیت):
این الگو به توسعهدهندگان کمک میکند تا رفتارهای مختلف یک شیء را در وضعیتهای مختلف تعریف کنند. به این ترتیب، هرگاه وضعیت یک شیء تغییر کند، رفتار آن نیز تغییر میکند.
اینها تنها چند نمونه از دیزاین پترنهایی هستند که میتوانید در Unity استفاده کنید. بسته به نیازهای پروژه خود، ممکن است به دیگر الگوها و رویکردهای معماری هم پی ببرید.
#یونیتی #برنامه_نویسی
🔥5👍4🤝1
یک مثال ساده را با الگوی تک نمونه (Singleton) در Unity ببینیم.
فرض کنید که میخواهیم یک مدیر موسیقی را پیادهسازی کنیم که به ما اجازه پخش موسیقی را بدهد. برای این کار، از الگوی تک نمونه استفاده میکنیم تا فقط یک نمونه از مدیر موسیقی در طول عمر برنامه وجود داشته باشد و از آن برای پخش موسیقی استفاده کنیم.
در اینجا، یک کلاس Singleton برای مدیر موسیقی خواهیم داشت:
سپس میتوانیم از این کلاس در دیگر اشیاء و اسکریپتها برای پخش موسیقی استفاده کنیم:
در این مثال، با استفاده از الگوی تک نمونه، اطمینان حاصل میشود که همیشه یک نمونه از کلاس AudioManager وجود دارد و میتوانیم به آن از هر قسمتی در بازی دسترسی داشته باشیم.
#یونیتی #برنامه_نویسی
فرض کنید که میخواهیم یک مدیر موسیقی را پیادهسازی کنیم که به ما اجازه پخش موسیقی را بدهد. برای این کار، از الگوی تک نمونه استفاده میکنیم تا فقط یک نمونه از مدیر موسیقی در طول عمر برنامه وجود داشته باشد و از آن برای پخش موسیقی استفاده کنیم.
در اینجا، یک کلاس Singleton برای مدیر موسیقی خواهیم داشت:
using UnityEngine;
public class AudioManager : MonoBehaviour
{
// این متغیر به عنوان نمونه یکتا از کلاس استفاده میشود
public static AudioManager Instance;
// این متغیر مسئول پخش موسیقی است
AudioSource audioSource;
// متد اولیهسازی کلاس
void Awake()
{
instance = this;
// دریافت AudioSource برای پخش موسیقی
audioSource = gameObject.GetComponent<AudioSource>();
}
// متد پخش موسیقی
public void PlayMusic(AudioClip music)
{
audioSource.clip = music;
audioSource.Play();
}
}
سپس میتوانیم از این کلاس در دیگر اشیاء و اسکریپتها برای پخش موسیقی استفاده کنیم:
using UnityEngine;
public class MusicPlayer : MonoBehaviour
{
// موسیقیهای مختلف
public AudioClip backgroundMusic;
public AudioClip victoryMusic;
// متد اجرا شده هنگامی که اشیاء فعال میشوند
void Start()
{
// پخش موسیقی پس زمینه در هنگام شروع بازی
AudioManager.Instance.PlayMusic(backgroundMusic);
}
// متد اجرا شده هنگامی که شرایط مشخصی برآورده میشود
public void PlayVictoryMusic()
{
// پخش موسیقی پیروزی
AudioManager.Instance.PlayMusic(victoryMusic);
}
}
در این مثال، با استفاده از الگوی تک نمونه، اطمینان حاصل میشود که همیشه یک نمونه از کلاس AudioManager وجود دارد و میتوانیم به آن از هر قسمتی در بازی دسترسی داشته باشیم.
#یونیتی #برنامه_نویسی
🔥6👍2
الگوی مشاهدهگر (Observer Pattern) معمولاً برای پیادهسازی رویدادها و واکنش به تغییرات در یک سیستم استفاده میشود. در مثال زیر، یک سیستم ساده پیامرسان را پیادهسازی میکنیم که اجازه میدهد که کاربران به عنوان مشترکین پیامهای دیگر کاربران را دریافت کنند.
در اینجا، یک کلاس برای مشترکین (یا Observer) و یک کلاس برای موضوع یا مشاهدهگر (یا Subject) ایجاد میکنیم:
حالا میتوانیم از این کلاسها برای پیادهسازی سیستم پیامرسان استفاده کنیم:
در این مثال، هر زمان که پیامی ارسال شود، تمام مشترکین از طریق متد
#یونیتی #برنامه_نویسی
در اینجا، یک کلاس برای مشترکین (یا Observer) و یک کلاس برای موضوع یا مشاهدهگر (یا Subject) ایجاد میکنیم:
using System.Collections.Generic;
using UnityEngine;
// Interface برای مشترکین
public interface IObserver
{
void Update(string message);
}
// کلاس برای مشترکین
public class User : IObserver
{
private string name;
public User(string name)
{
this.name = name;
}
// متد برای بهروزرسانی پیام
public void Update(string message)
{
Debug.Log(name + " received message: " + message);
}
}
// کلاس برای موضوع یا مشاهدهگر
public class Messenger
{
// لیستی برای نگهداری مشترکین
private List<IObserver> observers = new List<IObserver>();
// متد برای اضافه کردن مشترک
public void AddObserver(IObserver observer)
{
observers.Add(observer);
}
// متد برای حذف مشترک
public void RemoveObserver(IObserver observer)
{
observers.Remove(observer);
}
// متد برای ارسال پیام به تمام مشترکین
public void SendMessage(string message)
{
foreach (var observer in observers)
{
observer.Update(message);
}
}
}
حالا میتوانیم از این کلاسها برای پیادهسازی سیستم پیامرسان استفاده کنیم:
using UnityEngine;
public class MessageSystem : MonoBehaviour
{
private Messenger messenger = new Messenger();
private void Start()
{
// اضافه کردن مشترکین
messenger.AddObserver(new User("User1"));
messenger.AddObserver(new User("User2"));
messenger.AddObserver(new User("User3"));
// ارسال پیام به تمام مشترکین
messenger.SendMessage("Hello, everyone!");
}
}
در این مثال، هر زمان که پیامی ارسال شود، تمام مشترکین از طریق متد
Update در کلاس User به روزرسانی میشوند و پیام را دریافت میکنند. این نشان دهنده عملکرد الگوی مشاهدهگر است که مشترکین به موضوع مشاهدهگر مشترک شده و بهروزرسانیهای مربوطه را دریافت میکنند.#یونیتی #برنامه_نویسی
🔥4👍2
الگوی کارخانه (Factory Pattern) در Unity معمولاً برای ایجاد شیءهای مختلف با استفاده از یک روش مشترک استفاده میشود. در مثال زیر، یک سیستم ایجاد شیء برای ایجاد دشمنان در یک بازی را پیادهسازی میکنیم.
در اینجا، یک کلاس انتزاعی برای دشمنها داریم:
سپس، دو کلاس مختلف برای دشمنان ایجاد میکنیم که از کلاس انتزاعی Enemy ارثبری میکنند:
سپس، یک کلاس کارخانه ایجاد میکنیم که به عنوان کارخانهای برای ایجاد شیءهای مختلف دشمن استفاده میشود:
حالا میتوانیم از کلاس کارخانه برای ایجاد دشمنان با نوعهای مختلف استفاده کنیم:
در این مثال، با استفاده از الگوی کارخانه، ما یک کارخانه ایجاد کردهایم که به ما اجازه میدهد دشمنان با نوعهای مختلف را ایجاد کنیم، بدون اینکه به طور مستقیم به کلاسهای مشخص دشمن مراجعه کنیم. این کار ما را قادر میسازد که بدون تغییر در کد، دشمنان جدید با نوعهای مختلف اضافه کنیم.
#یونیتی #برنامه_نویسی
در اینجا، یک کلاس انتزاعی برای دشمنها داریم:
using UnityEngine;
// کلاس انتزاعی برای دشمنها
public abstract class Enemy : MonoBehaviour
{
public abstract void Attack();
public abstract void Move();
}
سپس، دو کلاس مختلف برای دشمنان ایجاد میکنیم که از کلاس انتزاعی Enemy ارثبری میکنند:
using UnityEngine;
// کلاسی برای دشمن نوع A
public class EnemyTypeA : Enemy
{
public override void Attack()
{
Debug.Log("Enemy Type A attacks!");
}
public override void Move()
{
Debug.Log("Enemy Type A moves!");
}
}
// کلاسی برای دشمن نوع B
public class EnemyTypeB : Enemy
{
public override void Attack()
{
Debug.Log("Enemy Type B attacks!");
}
public override void Move()
{
Debug.Log("Enemy Type B moves!");
}
}
سپس، یک کلاس کارخانه ایجاد میکنیم که به عنوان کارخانهای برای ایجاد شیءهای مختلف دشمن استفاده میشود:
using UnityEngine;
// کلاس کارخانه برای ایجاد دشمنان
public class EnemyFactory : MonoBehaviour
{
// متد ایجاد دشمن با توجه به نوع
public Enemy CreateEnemy(string enemyType)
{
switch (enemyType)
{
case "TypeA":
return new EnemyTypeA();
case "TypeB":
return new EnemyTypeB();
default:
Debug.LogError("Unknown enemy type: " + enemyType);
return null;
}
}
}
حالا میتوانیم از کلاس کارخانه برای ایجاد دشمنان با نوعهای مختلف استفاده کنیم:
using UnityEngine;
public class GameManager : MonoBehaviour
{
private EnemyFactory enemyFactory;
private void Start()
{
enemyFactory = GetComponent<EnemyFactory>();
// ایجاد دشمن نوع A
Enemy enemyA = enemyFactory.CreateEnemy("TypeA");
enemyA.Attack();
enemyA.Move();
// ایجاد دشمن نوع B
Enemy enemyB = enemyFactory.CreateEnemy("TypeB");
enemyB.Attack();
enemyB.Move();
}
}
در این مثال، با استفاده از الگوی کارخانه، ما یک کارخانه ایجاد کردهایم که به ما اجازه میدهد دشمنان با نوعهای مختلف را ایجاد کنیم، بدون اینکه به طور مستقیم به کلاسهای مشخص دشمن مراجعه کنیم. این کار ما را قادر میسازد که بدون تغییر در کد، دشمنان جدید با نوعهای مختلف اضافه کنیم.
#یونیتی #برنامه_نویسی
👍2🔥2🥰1👏1
الگوی وضعیت (State Pattern) معمولاً برای مدیریت رفتارهای مختلف یک شیء در وضعیتهای مختلف استفاده میشود. در مثال زیر، یک سیستم سادهای برای مدیریت وضعیت یک دستگاه نور را پیادهسازی میکنیم.
در اینجا، یک کلاس برای نمایش دستگاه نور داریم که در وضعیتهای مختلف قرار میگیرد:
حالا میتوانیم از این کلاسها برای مدیریت وضعیت دستگاه نور استفاده کنیم:
در این مثال، هر وضعیت (روشن یا خاموش) به عنوان یک کلاس انتزاعی پیادهسازی شده است و ما از کلاس
#یونیتی #برنامه_نویسی
در اینجا، یک کلاس برای نمایش دستگاه نور داریم که در وضعیتهای مختلف قرار میگیرد:
using UnityEngine;
// کلاس انتزاعی برای وضعیتهای مختلف دستگاه نور
public abstract class LightState
{
public abstract void HandlePower(LightSwitch lightSwitch);
}
// وضعیت روشن
public class OnState : LightState
{
public override void HandlePower(LightSwitch lightSwitch)
{
Debug.Log("Light is already on.");
}
}
// وضعیت خاموش
public class OffState : LightState
{
public override void HandlePower(LightSwitch lightSwitch)
{
Debug.Log("Light is now on.");
lightSwitch.SetState(new OnState());
}
}
// کلاس دستگاه نور
public class LightSwitch : MonoBehaviour
{
private LightState currentState;
public LightSwitch()
{
currentState = new OffState();
}
// متد برای تغییر وضعیت دستگاه نور به روشن
public void TurnOn()
{
currentState.HandlePower(this);
}
// متد برای تغییر وضعیت دستگاه نور به خاموش
public void TurnOff()
{
currentState.HandlePower(this);
}
// متد برای تنظیم وضعیت فعلی دستگاه نور
public void SetState(LightState state)
{
currentState = state;
}
}
حالا میتوانیم از این کلاسها برای مدیریت وضعیت دستگاه نور استفاده کنیم:
using UnityEngine;
public class GameManager : MonoBehaviour
{
private void Start()
{
LightSwitch lightSwitch = new LightSwitch();
// روشن کردن دستگاه نور (وضعیت اولیه خاموش)
lightSwitch.TurnOn();
// دوباره روشن کردن دستگاه نور (وضعیت اولیه روشن)
lightSwitch.TurnOn();
// خاموش کردن دستگاه نور (از وضعیت روشن به خاموش)
lightSwitch.TurnOff();
// دوباره خاموش کردن دستگاه نور (وضعیت اولیه خاموش)
lightSwitch.TurnOff();
}
}
در این مثال، هر وضعیت (روشن یا خاموش) به عنوان یک کلاس انتزاعی پیادهسازی شده است و ما از کلاس
LightSwitch برای مدیریت وضعیت دستگاه نور استفاده میکنیم. با تغییر وضعیت دستگاه نور، عملکرد آن نیز تغییر میکند. این نشان میدهد که الگوی وضعیت چگونه میتواند به مدیریت رفتارهای مختلف یک شیء در وضعیتهای مختلف کمک کند.#یونیتی #برنامه_نویسی
🔥2👍1