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

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

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

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

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

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

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

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

منبع: gameover.blog.ir

چطور سیشارپ و جاوااسکریپت رو یادبگیریم ؟
چون بچه های زیادی مشکل داشتن تصمیم گرفتم کمی توضیح بدم :
واسه یادگیری سیشارپ باید CPP بلد باشید. ساختار سیشارپ همونه فقط یه سری چیزا اضافه میشه،که اونم خلاصه یاد میدم.
واسه یادگیری js هم کمی پاسکال بلد باشید و همون c کافیه.
یه مقایسه سطحی میندازم روی دستورات سی پلاس پلاس و سیشاپ و جاوااسکریپت یا همون js (دقت کنید js رو با JAVA اشتباه نگیرید چون جاوا یه زبون جداست که js زیرمجموعه ی JAVA میشه و ساختار JAVA رو بعدا یاد می دم اگه نیازی بود)

* در CPP یا C وقتی بخوایم یه فایل کتابخونه ای رو ضمیمه کنیم از دستور include استفاده می کنیم که ابتدای برنامه می یاریمش.
مثال :

کد:
روش اول:
#include <iostream.h>
روش دیگر :
#include "stdio.h"
فرق دو روش هم اینه که توی یکیش ابتدا مسیر جاری رو واسه یافتن می گرده توی یکی دیگه توی پوشه ی include رو می گرده واسه یافتن فایل های هیدر یا سرآیند با پسوند h ( یعنی header و فایل های کتابخونه ای که در سر برنامه می آن)


* در JS نیازی به بار یا ضمیمه کردن فایل های کتابخونه ای نیست و خود انجین وظیفه داره هر فایلی رو که نیاز بود ضمیمه کنه پس ساده تر هست از این جهت کدنویسی کمتر.


* در csharp از using استفاده می کنیم برای افزودن فضای نام یا namespace یا همون کلاس هایی که توی اسکریپت هاو برناممون می خوایم از اونا استفاده کنیم.
مثال:

کد:
using UnityEngine;
using System.Collections;
توی دستورات فوق فضای نام UnityEngine و System.Collections رو اوردم .
این دو تا رو میاریم چون بیشتر کدهایی که می نویسیم توابع یا دستوراتی هستن که توی کلاس UnityEngine و کلاس Collections (که خودش زیر مجموعه ی کلاس System میشه) تعریفشون وجود داره.

البته اگه این دستورات رو نیاریم دیگه هرکدی که می نویسیم دقیقا بدونیم توی کدوم کلاس تعریف شده .

به عنوان مثال وقتی از دستور Debug.Log برای چاپ یه پیام استفاده می کنیم باید اونو به صورت UnityEngine.Debug.Log بیاریم چون تابع Log در کلاس Debug تعریف شده و کلاس Debug هم در کلاس UnityEngine تعریف شده.

کلاس MonoBehaviour هم که در کلاس UnityEngine تعریف شده پس اگه فضای نام UnityEngine رو بالای برنامه ضممیه نکنیم باید به صورت UnityEngine.MonoBehaviour بیاد.

دستوراتی که در کلاس های دیگه تعریف شده رو هم باید شناخت و اسم کلاسشون رو بیاریم و بعدش علامت نقطه بزنیم و توابع زیرشاخه ی اونا رو که لیست میشه شناسایی کنیم که این کار چون شلوغ کاری هست از فضای نام استفاده می کنیم تا خلاصه بشه(یعنی همون آوردن اسم کلاس های مادر اونا که در بالا با using ضمیمه می کنیم)

مثال :
توی سیشارپ اگه بخوام اسکریپتی بسازم که پیام "Hello Promakers.ir " رو چاپ کنه کد اینطوری میشه:
کد PHP:
//using UnityEngine;
//using System.Collections;

public class NewBehaviourScript UnityEngine.MonoBehaviour {

    
// Use this for initialization
    
void Start () {
        
UnityEngine.Debug.Log("Hello promakers.ir");
    }
    
    
// Update is called once per frame
    
void Update () {
    
    }


می بینید فضای نام رو گذاشتم جزو توضیحات که بعد از دو تا علامت اسلش(//) آوردم(توضیحات چند خطی هم بین /**/ میاد که اینا همون ساختار سی پلاس پلس هست که اینجا نباید درس بدم توی بخش c بپرسید winking )

اگه در کد فوق دو خط زیر حزو توضیحات نباشه:
کد:
//using UnityEngine;
//using System.Collections;
دیگه اجباری به اوردنشون توی سورس نیست و آوردنشون هم اخیتاری هست(ولی زیاده کاری هست)
کد معادل:
کد PHP:
using UnityEngine;
using System.Collections;

public class 
NewBehaviourScript UnityEngine.MonoBehaviour {
    
    
// Use this for initialization
    
void Start () {
        
UnityEngine.Debug.Log("Hello promakers.ir");
    }
    
    
// Update is called once per frame
    
void Update () {
        
    }

کد معادل دیگه :
کد PHP:
using UnityEngine;
using System.Collections;

public class 
NewBehaviourScript MonoBehaviour {
    
    
// Use this for initialization
    
void Start () {
        
Debug.Log("Hello promakers.ir");
    }
    
    
// Update is called once per frame
    
void Update () {
        
    }

روی کدها نگاه کنید تا بیشتر درک کنید.
--
از تفاوت های دیگه زبان js و سیشارپ اینه که توی js متغیرها رو به این صورت تعریف می کنیم:
کد:
var varName:varType[=defaultVal];
در js ابتدا اسم متغیر می یاد بعشد دو نقطه افقی(happy و بعدش نوع متغیر.
قسمتی که توی [] اوردم شال مقدار پیشفرض متغیر میشه و اختیاری هست. توضیح هم نمی دم روی کد چون اسم خوبی گذاشتم به فارسی انگلیسی(فینگلیش) واضح هست.

در سیشارپ اول نوع متغیر میاد و بعدش اسم متغیر و بعدش علامت انتساب(=) و بعدش مقدار پیش فرض که مساوی و مقدار دادن اختیاری هست. قبل از نوع متغیر هم میشه کلمات public و private رو اورد که به معنی سراسری و خصوصی هست. فرقشون اینه که متغیر سراسری در تمام توابع شناخته شده هست و می تونیم به مقدار اون متغیر دسترسی داشته باشیم ولی نوع خصوصی فقط داخل همون تابع.
مثال :
کد:
public bool render_mesh_normaly = true;
private bool render_lines_1st = true;


نکته آخر: یاد گیری زبان های js و csharp بسیار ساده است ولی احتیاج به دانش کلی داره. وقتی کل ساختار یک زبان رو یاد بگیریم دیگه نیازی به حفظ کردن نداریم. کافیه الگو رو از اینترنت درآریم و نحوه ی استفاده از اونا رو درک کنیم . یا یک مثال ببینیم و کمی تحقیق کنیم.
معمولا زمانی که برامون سوالی پیش می یاد بسته به اون سوالمون سعی می کنیم در امر یادگیری پیش روی کنیم در غیر اینصورت اگه بخوایم کل زبان سیشارپ و تمامی مسائل رو حل کنیم باید بگم یک شبه نمیشه. شما ساختار سی پلاس پلاس رو یاد بگیرید بعدش بیاید ببینید سیشارپ چقدر آسونه.

یکی از خصوصیات دیگه ی سیشارپ و قدرتش نسبت به cPP اینه که مثلا وقتی می خوایم تبدیل متغیر انجام بدیم می تونیم بعد از اسم اون متغیر یه نقطه بذارم و بعدش تابع مورد نظر رو انتخاب کنیم. چون خود اسم متغیرها هم نوعی کلاس محسوب می شن که زیر توابعی عضو خودشون دارن . مثلا اگه متغیری از نوع int تعریف کرده باشیم به اسم number برای تبدیلش به رشته ی عددی و برگشت مقدار تبدیل شده می نویسیم num.toString() و و یا تبدیل float به int می نویسیم varName.toByte() و الی آخر.big grin

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

من حتی سیشارپ رو خوب نمی دونستم و کمی فکر کردم دیدم همون CPP هست ولی با قابلیت های تازه تر (در حقیقت سیشارپ ورژن جدید CPP هست از نظر من و اگر چه اینطور نیست و CPP یه جاهایی لازمه ولی به هر حال نظر شخصیمه و فعلا بپذیرید)



اینا تازه خیلی چیزای مسخره و ساده بود.
بعدش چیزای پیشرفته توی سایتای مختلف بگردید مفاهیم thread و delegate و خیلی خیلی چیزای جدید دیگه که هی دات نت به روز میشه. و شما باید برنامه های بهینه و سرعتی مثل تلگرام بسازید
موفق باشید
موافقین ۰ مخالفین ۰ ۹۴/۰۶/۳۰
مدیرکل

نظرات (۱)

عالی بود تشکر
پاسخ:
ممنون

ارسال نظر

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