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

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

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

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

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

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

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

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

public virtual void Function و overriding در یونیتی

دوشنبه, ۱۰ خرداد ۱۳۹۵، ۱۱:۵۳ ب.ظ

gameover.blog.ir

توابعی داخل هر کلاس  والد که قبل از نوعشون virtual بیاد اجازه ی override شدن دارن.

یعنی میشه همون تابع رو با همون نام در کلاس دیگه ای مجددا به طور دیگه ای تعریف کرد(با ورودی و خروجی و پارامترهای متفاوت)

مثال :

کلاس والد ما اینه(کلاس Parent ) :

using UnityEngine;
using System.Collections;
public class Parent : MonoBehaviour
{
void Start ()
{
ParentFunction();
}

public void ParentFunction()
{
print("parent says hello");
FunctionA();
FunctionB();
}
public void FunctionA()
{
print("function A says hello");
}
public void FunctionB()
{
print("function B says hello");
}
}

کلاس فرزند Child که از کلاس والد Parent مشتق میشه(تمام توابع و متغیرهاشو به ارث می بره):


public class Child : Parent
{
void Start ()
{
ParentFunction();
}
}

در اینجا برای مثال در کلاس Parent تابعی به اسم FunctionA داشتیم که Ovveride نمیشه چون virtual قبلش نداشت.
اگر بخوایم Override اش کنیم اول باید تعریفش رو در کلاس Parent به این صورت تغییر بدیم :
public virtual void FunctionA () {
print("function A says hello");
}

حالا می تونیم اون رو در تابع Start به این صورت Ovveride کنیم برای اینکه خروجیش فرق کنه :
using UnityEngine;
using System.Collections;
public class Child : Parent
{
void Start ()
{
ParentFunction();
}
public override void FunctionA()
{
print("Im a new version of function A");
}
}



خروجی ها شبیه اینه :
parent says hello
Im a new version of function A
function B says hello

نظرات (۰)

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

ارسال نظر

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