PDA

نسخه کامل مشاهده نسخه کامل : آموزشهای پیوسته UnrealScript ( قدم به قدم مقدماتی تا پیشرفته )



Reza Azimy_RW
21-05-2012, 20:18
سلام دوستان اول از همه که انجمن چقدر بد استایل شده :دی دوم اینکه تصمیم گرفتم از مقدماتی تا پیشرفته اموزشهای آنریل اسکریپت رو قرار بدم با توضیحات 100 درصد کامل که هر کسی متوجه بشه مثل بقیه آموزشهای روی نت هم نیست که وسط کار ول بشه و ادامه پیدا نکنه تا پیشرفته مطمینا" ادامه پیدا میکنه هر اموزش رو به صورت یه پست جدا توی تایپیک قرار میدم
فقط یکم رسمی تایپ میکنم چون میخام جاهای دیگه هم بزارم اموزشا رو :46:

موفق باشین

Reza Azimy_RW
21-05-2012, 20:24
شروع برنامه نویسی در UDK ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

برای کد نویسی در این انجین باید یک سری مسایل را رعایت کنید تا کدهای شما توسط انجین تشخیص داده بشه
کدهایی که نوشته میشه مستقیما" اجرا نخواهند شد و باید موقع اجرای انجین کامپایل شوند
برای شروع کد نویسی به مسیری که یو دی کی در آن نصب است رفته و به مسیر Development\Src بروید و یک پوشه با نام دلخواه انتخاب کنید
سپس یک پوشه دیگر داخل این پوشه با نام Classes ایجاد کنید اکنون میتوانید کدهای خود را داخل این پوشه ایجاد کنید
سپس برای اینکه انجین متوجه بشه پوشه ای یا یک سری کد جدید اضافه شده به مسیر UDKGame\Config رفته و فایل DefaultEngine.ini را باز کنید و در زیر قسمت :
[Engine.ScriptPackages]
این خط کد را اضافه کنید :
+NonNativePackages=MyCodes
با این تفاوت که به جای MyCodes نام پوشه ای که ایجاد کردید را قرار دهید

Reza Azimy_RW
21-05-2012, 20:28
آشنایی با فانکشنها و ساخت اولین کلاس در UDK ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])


در این بخش از آموزش قصد داریم یک کلاس ساده بنویسیم که در اون فانکشن PostBeginPlay رو معرفی میکنیم . خاصیت این فانکشن اینه که اولین فانکشنی هست که موقع اجرای بازی فراخانی میشه و فقط یک بار این کار انجام میشه .

کلاس ما به این شکل هست که توضیحات رو در ادامه خواهم داد :


class RWScript extends Actor
placeable;

function PostBeginPlay()
{
`log("RW Game And Design");
}

DefaultProperties
{
begin object class="SpriteComponent" Name=RWSprite
Sprite=Texture2D'EditorResources.S_NavP'
HiddenGame=true;
end object
Components.Add(RWSprite)
}

توضیحات :
class RWScript extends Actor
placeable;
در این قسمت کلاس ما از اکتور مشتق گرفته شده تا بتونیم کلاسمون رو از بخش Actor Class در اینجین وارد مرحله یا لولمون بکنیم

function PostBeginPlay()
{
`log("RW Game And Design");
}
شکل کلی این فانکشن به این صورت هست که در اینجا ما متن RW Game And Design رو داخل اون نوشتیم که داخل فایل Launch.log در مسیر \UDKGame\Logs بتونیم متن رو ببینیم پس از اجرای بازی


DefaultProperties
{
begin object class="SpriteComponent" Name=RWSprite
Sprite=Texture2D'EditorResources.S_NavP'
HiddenGame=true;
end object
Components.Add(RWSprite)
}
این قسمت هم در کل مییگه یه اسپرات برای شکل اکتورمون ایجاد شه و در بازی هم نمایش داده نشه و فقط بشه اون رو در ادیتور دید

Reza Azimy_RW
21-05-2012, 20:29
متغیرها در UDK ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])


در این اموزش قصد داریم به معرفی کلی متغیرها و معرفی اختصاصی دو متغیر بپردازیم

متغیرهای int :
این نوع از متغیرها که به این شکل تعریف میشوند :
var int RWGame;
متغیرهایی هستند که فقط عدد صحیح میپذیرند . مثلا : 1-2 -3 و ...

Array ها :
متغیرهایی هستند که چند متغیر را در خود جای میدهند . یعنی در کل اگر ما کد زیر را بنویسیم :
var int RWGame[4]
در اینجا ما چهار متغیر از نوع int با نامهای :
RWGame[0]
RWGame[1]
RWGame[2]
RWGame[3]
ایجاد کردیم که میتوانیم به تک تک انها مغدار جدا گانه ای را بدهیم . در کل استفاده از ارای ها بیشتر برای خلاصه نویسی و دسترسی سریعتره

به عنوان مثال کدهای زیر را ببینید :




class AwesomeActor extends Actor
placeable;
var int Baskets[4];
var int TestNumber;
function PostBeginPlay()
{
TestNumber = 2;
Baskets[0] = 2;
Baskets[1] = 13;
Baskets[2] = 4;
Baskets[3] = 1;
'log("Test Basket:" @ Baskets[TestNumber]);
}
defaultproperties
{
Begin Object class="SpriteComponent" Name=Sprite
Sprite=Texture2D'EditorResources.S_NavP'
HiddenGame=True
End Object
Components.Add(Sprite)
}




در این کدها خروجی ما ScriptLog: Test Basket: 4 است
موفق باشید

parvizamd
22-05-2012, 12:03
سلام دوستان اول از همه که انجمن چقدر بد استایل شده :دی دوم اینکه تصمیم گرفتم از مقدماتی تا پیشرفته اموزشهای آنریل اسکریپت رو قرار بدم با توضیحات 100 درصد کامل که هر کسی متوجه بشه مثل بقیه آموزشهای روی نت هم نیست که وسط کار ول بشه و ادامه پیدا نکنه تا پیشرفته مطمینا" ادامه پیدا میکنه هر اموزش رو به صورت یه پست جدا توی تایپیک قرار میدم
فقط یکم رسمی تایپ میکنم چون میخام جاهای دیگه هم بزارم اموزشا رو :46:

موفق باشین
آقا این چه کاری بود انصافا حالم از این استایل بهم می خوره...
دمتت گرم رضا ادامه بده.

Reza Azimy_RW
22-05-2012, 18:26
قربونت پرویز

struct ها
یه توضیح کلی در این مورد میدم و میگذریم از این بخش چون فعلا" بهش نیازی نداریم
یک نمونه struct :

struct Cylinder
{
var float Radius, Height;
};

فرض میگیریم این در یک کلاس نوشته شده حالا اگه بخوایم از متغیر Height که داخل اون نوشته شده استفاده کنیم به این طریق عمل میکنیم :

var Cylinder MyCylinder;
نمیدونم چجوری توضیح بدم ببینید اول ما میخایم یه متغیر تعریف کنیم که تمامی خصوصیات Struct رو داشته باشه پس مینویسیم Var Cylinder یعنی قسمت اولش بعد باید بریزیمش تو یه متغیر جدید تا بتونیم ازش استفاده کنیم اون متغیر هم هست MyCylinder
بعد مثلا" الان میخایم متغیر Radius رو از داخل Struct مون رو ازش استفاده کنیم برای این کار کد بعد از کد قبلی کد زیر رو مینویسیم :

MyCylinder.Radius = 50;

موفق باشید

Reza Azimy_RW
22-05-2012, 21:43
استفاده از وکتورها در Unreal Script ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
خوب اول اینکه وکتورها چی هستن ... در فضای دو بعدی دو مختصات داریم x و y که محل قرار گیری شی رو تعیین میکنه . در فضای سه بعدی یه مختصات دیگه اضافه میشه که z هست و مربوط میشه به عمق
این سه مختصات x و y و z رو میتونیم در یک وکتور نگهداری یا تعیین کنیم .
حالا میرسیم به بخش عملی
این کدها رو داخل یک کلاس بنویسید :


Class RWScript extends Actor
placeable;
var vector MyLocation;
function PostBeginPlay()
{
MyLocation.Z = 64.0;
SetLocation(Location + MyLocation);
}
defaultproperties
{
Begin Object Class=SpriteComponent Name=Sprite
Sprite=Texture2D'EditorResources.S_NavP'
End Object
Components.Add(Sprite)
}

توضیحات :
ابتدا یک وکتور تعریف شده با نام MyLocation:

var vector MyLocation;

سپس در یک تابع PostBeginPlay که همونطور که قبلا توضیح دادیم یک بار اول بازی اجرا میشه میخایم بگیم که همون اول بازی آبجکت ما به اندازه 64 بالا بره . پس در این فانکشن مینویسیم :
ابتدا تعیین مقدار z وکتورمون یعنی MyLocation :

MyLocation.Z = 64.0;
سپس با استفاده کد زیر ابتدا بمیگیم SetLocation که این به ما میگه محل اکتورمون رو ست کن به ....
بعد میبینید که داخل پرانتز نوشته شده Location + MyLocation که میگه Location یا محل فعلی قرار گیری آبجکت با محلی که ماتعیین کردیم ( MyLocation) جمع بشه یعنی اضافه بشه به محل فعلی .


SetLocation(Location + MyLocation);

در این صورت در نتیجه کار ما میبینیم که هر جایی اکتورمون رو داخل ادیتور قرار بدیم وقتی بازی رو اجرا کردیم به اندازه مختصاتی که وارد کردیم یعنی 64 بالا تر میره

معرفی ایونت Tick :
در ادامه همین آموزش میخایم ایونت Tick رو هم معرفی کنیم . Tick ایونتی هست که در هر لحظه فراخانی میشه . برای بهتر درک کردن مفهموم این کلاس رو بنویسید :

Class RWScript extends Actor
placeable;

var vector LocationOffset;

Event Tick(float deltaTime)
{
LocationOffset.Z = 0.1;
SetLocation(Location + LocationOffset);
}

defaultproperties
{
Begin Object Class=SpriteComponent Name=Sprite
Sprite=Texture2D'EditorResources.S_NavP'
End Object
Components.Add(Sprite)
}

حالا با قرار دادن اکتورمون در صحنه و اجرای بازی میبینیم که اکتورمون آروم آروم به سمت بالا حرکت میکنه
چند تا اموزش پشت سر هم نوشتم چون تو روزهای آینده درگیرم نمیتونم آموزش بنویسم
موفق باشین

armin_555
23-05-2012, 00:36
من UDK کار نمیکنم ولی توضیحاتت خیلی خوبن.
خسته نباشی.:46:
منم حالم از این استایل بهم میخوره.
مگه قبلا چه ایرادی داشت که اینجوریش کردن؟؟!!!

Reza Azimy_RW
02-07-2012, 19:29
سلام دوستان
اموزشها رو پی دی اف کردم واسه دانلود که 40 صفحه شده که حدود 10 صفحه همین اموزشهاس بقیش جدیده
از اینجا دانلود کنید فقط کسی دانلود کرد نظرشو بگه :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

aliscan
02-07-2012, 23:23
سلام

دستت درد نکنه رضا جان،حیفم اومد فقط تشکر خالی بزنم و پست ندم.عالی بود آموزش،امیدوارم توانش رو داشته باشی و بخش های بعدیش رو هم آموزش بدی.

خسته نباشـــــــــی:10:

daniyeg
31-01-2015, 20:05
کار نمیکنه

kenzu
31-01-2015, 20:22
مثل بقیه آموزشهای روی نت هم نیست که وسط کار ول بشه و ادامه پیدا نکنه تا پیشرفته مطمینا" ادامه پیدا میکنه


:n02: سه سال بعد

Reza Azimy_RW
31-01-2015, 21:25
یا حضرت نوح تایپیک سه سال پیشه الان دیگه انریل اسکریپت میخای یاد بگیری چیکار :n13: