Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> ساخت بازی با نرم افزار Unity -> سوال و جواب (رابط گرافیکی کاربر - GUI)
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه 1, 2, 3, 4, 5, 6, 7, 8, 9  بعدي

سوال و جواب (رابط گرافیکی کاربر - G
نويسنده
پيغام
hamzehshabani
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 16 شهريور 1387
تعداد ارسالها: 357
محل سكونت: استان گیلان


4 شنبه 19 اسفند 1388 - 10:10
پاسخ بصورت نقل قول
سلام دوستان لطفا سوالات مربوط به رابط گرافیکی کاربر - GUI را در این تاپیک مطرح کنید. Surprised

_________________


خدایا کمکم کن تا درهایی که به سویم میگشایی ندانسته نبندم و درهایی که به رویم میبندی به اصرار نگشایم. . .

آی دی من : Hamzeh_Shabani

سایت من : www.GameLab.ir



اين نامه توسط hamzehshabani در جمعه 21 اسفند 1388 - 16:07 ويرايش شده است.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
SMOKE_UNITY
بازی ساز
بازی ساز


تاريخ عضويت: 4 شنبه 14 بهمن 1388
تعداد ارسالها: 229


4 شنبه 19 اسفند 1388 - 18:47
پاسخ بصورت نقل قول
سلام
من تو اسکریپت حرکتی بازیکن خودم راه رفتن. دویدن .نشستن .خو ابیده رو دارم می خوام مثلا هر وقت کلید c رو زدم و بازیکن نشست وضعیت بازیکن در کنار صفحه نشون داده بشه (درست مثل بازی igi.2)اگه سوالم ساده است ببخشید.

_________________
خدايا ميترسم از صورت هايي كه لبخند ميزنند اما نگاه مهرباني ندارند.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Fantasy.Gamer
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 2 شنبه 16 آذر 1388
تعداد ارسالها: 278
محل سكونت: کنار کامپیوتر


5 شنبه 20 اسفند 1388 - 00:42
پاسخ بصورت نقل قول
SMOKE_UNITY نوشته:
سلام
من تو اسکریپت حرکتی بازیکن خودم راه رفتن. دویدن .نشستن .خو ابیده رو دارم می خوام مثلا هر وقت کلید c رو زدم و بازیکن نشست وضعیت بازیکن در کنار صفحه نشون داده بشه (درست مثل بازی igi.2)اگه سوالم ساده است ببخشید.

كد:
function Start();
var sens=0;

if (Input.GetKey("c")){
animation.Play("SttingDown");
sens=1;


function OnGUI(){
if(sens==1){

 GUI.Label(Rect(10,10,200,50),"X:"+transform.position.x );
  GUI.Label(Rect(10,30,200,50),"Y:"+transform.position.y );
   GUI.Label(Rect(10,50,200,50),"Z:"+transform.position.z );
}
 }

چیزایی که می خوای تو بازی نوشته بشه باید تو تابع OnGUI نوشته بشه
این اعدادی رو که تو پرانتز نوشتم رو تغییر بده تا بهتر بفهمی که کدوم عدد مال کدوم محوره
ببخشید اگه نتونستم جوابتون رو بدم

_________________
هیچ وقت دعا نکن جای دیگران باشی زیرا در اینصورت جای تو خالی می ماند!
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
SMOKE_UNITY
بازی ساز
بازی ساز


تاريخ عضويت: 4 شنبه 14 بهمن 1388
تعداد ارسالها: 229


5 شنبه 20 اسفند 1388 - 22:40
پاسخ بصورت نقل قول
fantasy.gamer تشکر بجای اون اعداد از تکسچر استفاده کردم مشکلم حل شد Laughing

_________________
خدايا ميترسم از صورت هايي كه لبخند ميزنند اما نگاه مهرباني ندارند.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Fantasy.Gamer
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 2 شنبه 16 آذر 1388
تعداد ارسالها: 278
محل سكونت: کنار کامپیوتر


5 شنبه 20 اسفند 1388 - 23:11
پاسخ بصورت نقل قول
سلام آقای SMOKE_UNITY
میشه بگی منظورت از به جای عدد تکسچر گذاشتم چیه؟
میشه کدت رو همینجا بزاری؟
خیلی مشتاق شدم منظورت رو بدونم Very Happy

_________________
هیچ وقت دعا نکن جای دیگران باشی زیرا در اینصورت جای تو خالی می ماند!
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
SMOKE_UNITY
بازی ساز
بازی ساز


تاريخ عضويت: 4 شنبه 14 بهمن 1388
تعداد ارسالها: 229


5 شنبه 20 اسفند 1388 - 23:56
پاسخ بصورت نقل قول
شاید منظورم رو بد متوجه شدی ولی عیبی ندارد


كد:
var neshaste : GUISkin;
var istade : GUISkin;
var davidan : GUISkin;

function OnGUI(){
if(sens==1){

      GUI.skin = neshaste ;
      ///////////////////////////
 GUI.Button( Rect( (Screen.width/2)-130, Screen.height -50, 100, 40), "");
 
}
if(sens==2){
GUI.skin = istade ;
GUI.Button( Rect( (Screen.width/2)-130, Screen.height -50, 100, 40), "");
 }
 if(sens==3){
GUI.skin = davidan ;
GUI.Button( Rect( (Screen.width/2)-130, Screen.height -50, 100, 40), "");
 }

}
////////////////////////////////////
function FixedUpdate() {

 if (!crouch)
...
sens=1;
else
      {
         if (crouch)
....
 sens=2;
 if (Input.GetKey(KeyCode.LeftShift))
...
sens=3;
{


منظورم نشان دادن حالت های بازیکن در صحنه بصورت کوچیک در پایین صفحه بود (مگه igi بازی نکردی)
منظور شما چی بود




Shocked
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
SMOKE_UNITY
بازی ساز
بازی ساز


تاريخ عضويت: 4 شنبه 14 بهمن 1388
تعداد ارسالها: 229


1 شنبه 23 اسفند 1388 - 16:47
پاسخ بصورت نقل قول
سلام من یک منو ساختم با چند تا ایکون داره می خوام وقتی مثلا روی game کلیک کردم یه پنجره ایجاد بشه و مرحله ی 1 داخل اون باشه و بازیکن با زدن مرحله وارد اون مرحله بشه .(تا اینجا رو خودم تونستم انجام بدم)
و بعد از پایان مرحله 1 مرحله ی 2 رو در منو نشون بده و بازیکن با زدن مرحله 2 وارد اون مرحله بشه (یعنی از قبل چند مرحله داشته باشم)(درست مثل بازی igi.2) (در ضمن چه جوری می تونم وقتی بازی شروع شد از اخرین save بالا بیاد اخه من از همون save که در wiki یونیتی وجود داره استفاده می کنم)اگه بتونید کمکم کنید خیلی خوشحال می شم .با تشکر
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Fantasy.Gamer
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 2 شنبه 16 آذر 1388
تعداد ارسالها: 278
محل سكونت: کنار کامپیوتر


1 شنبه 23 اسفند 1388 - 23:37
پاسخ بصورت نقل قول
SMOKE_UNITY نوشته:
سلام من یک منو ساختم با چند تا ایکون داره می خوام وقتی مثلا روی game کلیک کردم یه پنجره ایجاد بشه و مرحله ی 1 داخل اون باشه و بازیکن با زدن مرحله وارد اون مرحله بشه .(تا اینجا رو خودم تونستم انجام بدم)
و بعد از پایان مرحله 1 مرحله ی 2 رو در منو نشون بده و بازیکن با زدن مرحله 2 وارد اون مرحله بشه (یعنی از قبل چند مرحله داشته باشم)(درست مثل بازی igi.2) (در ضمن چه جوری می تونم وقتی بازی شروع شد از اخرین save بالا بیاد اخه من از همون save که در wiki یونیتی وجود داره استفاده می کنم)اگه بتونید کمکم کنید خیلی خوشحال می شم .با تشکر

متاسفانه من اهل بازی نیستم و نمی دونم اصلا IGI چیه.
فقط وقتی بچه بودم زیاد بازی کردم
من نمی دونم برای یونیتی کلاسی یا تابعی برای سیو و لود تعریف کرده باشن ولی باکد نویسی میشه یه کارایی کرد.
مثلا بگی که اگر متغیر فلان برابر با یک بود یعنی مرحله یک و اگر برابر با 2 بود یعنی مرحله ی 2 و......
حالا هر وقت پلیر برنده شد به متغیر فلان یه دونه اضافه کن
حالا هر وقت پلیر باخت مقایسه کنه و ببینه متغیر فلان چنه. هر چی بود اون رو با application.load(فلان( مرحله رو فراخوان کن.
ولی این راه حل برای موقعی خوبه که از بازی خارج نشیم
حالا برای حل این مشکل باید مدیران جواب بدن من هنوز از شما تازه کار ترم
به هر حال نظر من بود
Very Happy

_________________
هیچ وقت دعا نکن جای دیگران باشی زیرا در اینصورت جای تو خالی می ماند!
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


2 شنبه 24 اسفند 1388 - 12:06
پاسخ بصورت نقل قول
نقل قول:
حالا برای حل این مشکل باید مدیران جواب بدن من هنوز از شما تازه کار ترم


خب باید اطلاعاتتون رو داخل یک فایل ( متنی ، باینری ، XML یا هرچی ... ) ذخیره کنید
یه نمونه کد ساده مینویسم برایتون :

كد:

using UnityEngine;
using System.Collections;
using System.IO;

public class NewBehaviourScript : MonoBehaviour {

   void Update () {

        if (Input.GetKeyDown(KeyCode.A))
        {
            TextWriter a = new StreamWriter( Application.dataPath + "/Save.txt", false);
            a.WriteLine("1");
            a.Close();

        }

   }


}


کد بالا یه فایل متنی رو داخل فلدر دیتا بازی ذخیره میکنه ...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
Fantasy.Gamer
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 2 شنبه 16 آذر 1388
تعداد ارسالها: 278
محل سكونت: کنار کامپیوتر


جمعه 28 اسفند 1388 - 05:11
پاسخ بصورت نقل قول
سلام آقای sadegh1993
ایشون تو یه تاپیک دیگه ای گفته بودن که می خوان زمانی تعریف کنن و هر وقت زمان تمام شد یه اتفاقی بیفته.
منم کد زیر رو نوشتم
حالا دیگه استاندارده یا نه باید مدیران نظر بدن
بیا اینم کدی که می خواستی البته کامل برات ننوشتم یه خورده هم باید خودت تلاش کنی.
ولی روند کار رو برات نوشتم


كد:
function FixedUpdate(){

timer+=1;

if(timer==50){
timer=0;
second-=1;

if(second==-1){
Application.Load("Shomareye Sahneye Lose")
}
}


function OnGUI(){

 GUI.Label(Rect(10,10,200,50), "Second: " + second);
 
}

شاید از خودتون سوال کنید که چرا تایمر=50
به این دلیل 50 گذاشتم چون فیکسد آپدیت هر .0.02 ثانیه یک بار اجرا میشه
حالا 50 *0.002 میشه چن؟(میشه یک ثانیه دیگه)
وقتی تایمر شد 50 یه واحد از سکند کم می کنه
تابع آن جی یو آی هم ثانیه رو نمایش میده
تایمر و سکند هم که باید اول برنامه به عنوان متغیر تعریف کنی و مقدار اولیه تایمر رو بدی 0 و مقدار اولیه ی سکند هم هر چی دلت می خواد
اگه بیشتر کمک خواستی بگو
من در خدمتم. Laughing

_________________
هیچ وقت دعا نکن جای دیگران باشی زیرا در اینصورت جای تو خالی می ماند!
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 9 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه 1, 2, 3, 4, 5, 6, 7, 8, 9  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |