صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از 11 به 16 از 16

موضوع: دادن اسکریپت به آبجکت

  1. Top | #1

    عنوان کاربر
    تاریخ عضویت
    Jan 2019
    شماره عضویت
    9129
    نوشته ها
    12
    تشکر
    4
    تشکر شده 0 بار در 0 ارسال

    دادن اسکریپت به آبجکت

    با سلام

    من در زمینه واقعیت افزوده (AR)کار میکنم و تازه می خوام با یونیتی کار کنم
    چند تا سوال داشتم

    1- آیا میشه تو یونیتی به هر آبجکتی کد اضافه کرد منظورم اینه که مثلا به image با canvas یا text و... کد کلیک اضافه کرد؟

    2- چطوری میشه کد رو پاس داد به اندروید استادیو؟ به طور دقیقتر از یونیتی چطوری تابعی رو از اندروید استادیو فراخوانی بکنیم؟

    3-

  2. Top | #11

    عنوان کاربر
    تاریخ عضویت
    Jan 2019
    شماره عضویت
    9129
    نوشته ها
    12
    تشکر
    4
    تشکر شده 0 بار در 0 ارسال
    نقل قول نوشته اصلی توسط Jinjer نمایش پست ها
    حتما باید اسم فولدری که تو پروژه ساختی دقیقا Resources باشه که بتونی با دستور Resources.Load بگیریش.

    این کدی که شما نوشتی توی ویندوز میاد یه فولدر تو اون آدرس میسازه و کار می کنه، ولی توی اندروید سیستم عامل به شما اجازه ساخت فولدر به این صورت نمیده مگر اینکه Permission رو از کاربر گرفته باشی.
    برای ذخیره فایل توی هر سیستم عاملی، از آدرس Application.persistentDataPath استفاده کن. برای اندروید همون فولدر اپ شمارو برمیگردونه دیگه نیازی نیست فولدر بسازی و اینجوری هم نیاز به Permission اضافه و حساس نداری و هم بعد از پاک کردن بازی یا اپ، فایل های اضافه ساخته شده هم پاک میشن. توی هر سیستم عاملی این Application.persistentDataPath آدرسش فرق داره. برای اندروید آدرسش اینه : /storage/emulated/0/Android/data/<packagename>/files که packagename اسم اپ شماست.
    یه همچین چیزی میشه هم موقع ذخیره این آدرس رو میزنی هم موقع خوندن:


    byte[] byteArray=File.ReadAllBytes(Application.persistentDataPath + "textTexture.jpg");

    File.WriteAllBytes(Application.persistentDataPath + "textTexture.jpg", bytes);

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

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

    اما من این دو قسمت رو متوجه نشدم :

    اول اینکه
    با کد شما من کد نوشتم و تست گرفتم وجواب داد و نیازی به ذخیره و لود از Resources نبود.یعنی اصلا جایی ننوشتم که توی این فولدر ذخیره کنه و بخونه .
    پس کار این Resources چیه اینجا ؟

    دوم اینکه
    Application.persistentDataPath آدرسش برای اندروبد میشه این : /storage/emulated/0/Android/data/<packagename>/files
    یعنی تو کد میشه به جای Application.persistentDataPath ما /storage/emulated/0/Android/data/<packagename>/files بنویسیم؟ میشه تو کدی که شما بالا برام نوشتین به جای APDataPath من storage /.... رو بنویسم؟

    یا اینکه این /storage/emulated/0/Android/data/<packagename>/files برای این است که ما تو خود اندروید بتونیم فولدر بنویسیم.?به طور مثال به این صورت: /storage/emulated/0/Android/data/<packagename>/files/Myfolder/Myfile.jpg


    سپاس از شما

  3. Top | #12

    عنوان کاربر
    تاریخ عضویت
    Feb 2017
    شماره عضویت
    8076
    نوشته ها
    141
    تشکر
    3
    تشکر شده 86 بار در 70 ارسال
    در مورد نوع فایل ها، فکر کنم یه سری فایل های خاص شدنیه با این روش، فکر می کنم فقط عکس و نوشته (مثلا فایل txt یا json) اگر بخوای هر فایلی رو اینجوری اجرا کنی باید از Asset Bundle استفاده کنی.
    https://docs.unity3d.com/Manual/AssetBundlesIntro.html
    https://docs.unity3d.com/ScriptReference/AssetBundle.html

    اینجوری فایل هایی که میخوای بعدا لود کنی رو میذاری تو یه پکیج و بعد لود می کنی. نیازی هم دیگه به فایل ساختن نیست چون خود یونیتی Asset Bundle رو ذخیره می کنه. یعنی اگر یه بار دانلود شده دفعه بعد دیگه دوباره دانلود نمی کنه و از نسخه Cache شده فایل استفاده می کنه.

    در مورد Resources ، این روش به این درد می خوره که اگر بخوای یه فایلی رو داخل پروژه داشته باشی ولی زمان اجرای بازی هنوز روی رم نیاری، مثلا نمیخوای تمام ویدئو هایی که داری یه جا لود بشن. میای این فایل هارو داخل پروژه توی فولدر Assets یه فولدر میسازی به اسم Resources، اون فایل ها با بیلد پروژه میان ولی موقع لود شدن Scene نیستن. هر وقت لازمشون داری Resources.Load رو صدا می زنی و اون فایل رو لود می کنی.

    در مورد Application.persistentDataPath ، تغییرش نده چون این یه متد Cross Platform هست، رو هر Device یا سیستم عاملی ممکنه یکم تغییر کنه که با اون آدرس دقیق کار نکنه. بعدشم برای هر پروژه مجبوری packagename رو عوض کنی، چه کاریه؟ چرا میخوای به قول معروف Hard Code کنی؟


    اگر پروژه سنگینی داری و کلی قراره محتوای برنامه به مرور زمان تغییر کنه، ویدئو ها عوض بشن، اضافه یا کم بشن و به قول معروف یه Live Ops لازم داری، برو سمت Unity Addressables که از نسخه 2018.2 به بعد اضافه شده. 2018.4 یا 2019.2 نسخه های خوب و Stable هستن. یکم دردسر یادگیری و سروکله زدن داره ولی وقتی یاد بگیری متوجه میشی چقدر کارتو راحت تر می کنه. سیستمش اینجوریه که داخل ادیتور دو تا دسته تعریف می کنی یکی برای فایل هایی که به صورت آنلاین باید دریافت بشه یعنی Remote ها و یه دسته هم برای اونایی که نیاز به دانلود نداره یعنی Local ها. بعد هر Asset یا فایل رو که انتخاب کنی و تیک Addressable رو بزنی میتونی خیلی راحت با یه string بگیریش. سیستم خودش متوجه میشه که این فایلی که میخوای صدا بزنی باید دانلود بشه یا نه. یه سری منبع میفرستم اگر علاقه مند بودی.
    https://github.com/Unity-Technologie...ssables-Sample : این مثال ها
    https://docs.unity3d.com/Packages/co...ngStarted.html : این هم Documentation برای شروع.

  4. کاربر زیر به خاطر ارسال مفید Jinjer از ایشان تشکر کرده است:

    taghdir (12-17-2019)

  5. Top | #13

    عنوان کاربر
    تاریخ عضویت
    Jan 2019
    شماره عضویت
    9129
    نوشته ها
    12
    تشکر
    4
    تشکر شده 0 بار در 0 ارسال
    نقل قول نوشته اصلی توسط Jinjer نمایش پست ها
    در مورد نوع فایل ها، فکر کنم یه سری فایل های خاص شدنیه با این روش، فکر می کنم فقط عکس و نوشته (مثلا فایل txt یا json) اگر بخوای هر فایلی رو اینجوری اجرا کنی باید از Asset Bundle استفاده کنی.
    https://docs.unity3d.com/Manual/AssetBundlesIntro.html
    https://docs.unity3d.com/ScriptReference/AssetBundle.html

    اینجوری فایل هایی که میخوای بعدا لود کنی رو میذاری تو یه پکیج و بعد لود می کنی. نیازی هم دیگه به فایل ساختن نیست چون خود یونیتی Asset Bundle رو ذخیره می کنه. یعنی اگر یه بار دانلود شده دفعه بعد دیگه دوباره دانلود نمی کنه و از نسخه Cache شده فایل استفاده می کنه.

    در مورد Resources ، این روش به این درد می خوره که اگر بخوای یه فایلی رو داخل پروژه داشته باشی ولی زمان اجرای بازی هنوز روی رم نیاری، مثلا نمیخوای تمام ویدئو هایی که داری یه جا لود بشن. میای این فایل هارو داخل پروژه توی فولدر Assets یه فولدر میسازی به اسم Resources، اون فایل ها با بیلد پروژه میان ولی موقع لود شدن Scene نیستن. هر وقت لازمشون داری Resources.Load رو صدا می زنی و اون فایل رو لود می کنی.

    در مورد Application.persistentDataPath ، تغییرش نده چون این یه متد Cross Platform هست، رو هر Device یا سیستم عاملی ممکنه یکم تغییر کنه که با اون آدرس دقیق کار نکنه. بعدشم برای هر پروژه مجبوری packagename رو عوض کنی، چه کاریه؟ چرا میخوای به قول معروف Hard Code کنی؟


    اگر پروژه سنگینی داری و کلی قراره محتوای برنامه به مرور زمان تغییر کنه، ویدئو ها عوض بشن، اضافه یا کم بشن و به قول معروف یه Live Ops لازم داری، برو سمت Unity Addressables که از نسخه 2018.2 به بعد اضافه شده. 2018.4 یا 2019.2 نسخه های خوب و Stable هستن. یکم دردسر یادگیری و سروکله زدن داره ولی وقتی یاد بگیری متوجه میشی چقدر کارتو راحت تر می کنه. سیستمش اینجوریه که داخل ادیتور دو تا دسته تعریف می کنی یکی برای فایل هایی که به صورت آنلاین باید دریافت بشه یعنی Remote ها و یه دسته هم برای اونایی که نیاز به دانلود نداره یعنی Local ها. بعد هر Asset یا فایل رو که انتخاب کنی و تیک Addressable رو بزنی میتونی خیلی راحت با یه string بگیریش. سیستم خودش متوجه میشه که این فایلی که میخوای صدا بزنی باید دانلود بشه یا نه. یه سری منبع میفرستم اگر علاقه مند بودی.
    https://github.com/Unity-Technologie...ssables-Sample : این مثال ها
    https://docs.unity3d.com/Packages/co...ngStarted.html : این هم Documentation برای شروع.

    بله من میخوام عکس وفیلم و موزیک رو دانلود کنم و بعد افلاین نمایش بدم .البته روی AR
    در نتیجه برای این کارها از Asset Bundle استفاده کنم؟

    -
    تو Asset Bundle ما یعنی نیازی به نوشتن لود نداریم مثل Resources.Load درسته خودش بعد دانلود میفهمه و کش میکنه؟

    -
    منظورشما از گذاشتن تو یه پکیج چیه عزیز؟همون فولدره؟منظورم این جمله شماست(" فایل هایی که میخوای بعدا لود کنی رو میذاری تو یه پکیج ")

    -
    پروژم سنگین نیست فعلا حداکثر فعلا 10تا تصویر و 10فایل مختلف که شاید اون فایل ها تغییر کنن
    اما خیلی ممنون که گفتی حتما بعد اینکه به نتیجه رو این برسم سوییچ میکنم روی اون Addressables

    -
    برای نمایش debug.log هام وقتی روی اندروید build and run میزنم باید چه کنم؟باید logcat اندروید استادیو روباز کنم؟

    -
    برای شروع کار با یونیتی به قصد بازی سازی دو بعدی و سه بعدی چه پیشنهادی و رفرنسی میدید؟


    سپاس.

  6. Top | #14

    عنوان کاربر
    تاریخ عضویت
    Feb 2017
    شماره عضویت
    8076
    نوشته ها
    141
    تشکر
    3
    تشکر شده 86 بار در 70 ارسال
    برای Log گرفتن چند تا راه هست، یکیش همون Logcat هست، یکی دیگه موقع Build گرفتن گزینه های Development Build و Script Debugging رو که تیک بزنی و گوشی رو با USB و حالت USB Debugging وصل کنی به کامپیوتر و Build and Run بزنی، میتونی داخل Editor و توی صفحه Console همون Log های بازی رو ببینی.
    راه دیگه هم این asset هست، دانلود کن، Prefab که گفته رو بنداز تو Scene و وقتی بازی رو تو گوشی اجرا کردی یه دایره با دستت بکش رو صفحه، لاگ میاد.
    https://assetstore.unity.com/packages/tools/integration/log-viewer-12047


    ببین من راه کارهایی که میتونی انتخاب کنی رو دادم، اینکه چجوری کار می کنه دیگه باید یاد بگیری، من اگه بخوام توضیح بدم اینجا 3 صفحه باید بنویسم. اگر انگلیسیت خوبه همون منابعی که دادم همه چیزو کامل توضیح داده، که چه جوری Asset Bundle بسازی و دانلود کنی. توی یوتیوب و حتی خود سایت یونیتی پر از آموزشه. اگر انگلیسیت خوب نیست من منبع فارسی قوی نمیشناسم ولی مطمئنم یکم سرچ کنی پیدا میشه.
    برای Addressables بعید میدونم منبع فارسی پیدا کنی چون چیز جدیدیه، ولی همون دو تا لینکی که فرستادم انگلیسی و کامله. Addressables راحت ترین و بهترین روشه برای کاری که شما میخوای، اگر انگلیسیت خوبه برو سراغش، اگر نه آموزش فارسی برای Asset Bundle پیدا کن.

    برای یادگیری کلی یونیتی هم بازم اگر انگلیسیت قویه خود سایت یونیتی پر آموزشه، یوتیوب یونیتی همه چیزو توضیح داده. اگر انگلیسیت خوب نیست دوستان دیگه ای باید منبع فارسی معرفی کنن من آشنا نیستم.
    ویرایش توسط Jinjer : 12-17-2019 در ساعت 02:37 PM

  7. Top | #15

    عنوان کاربر
    تاریخ عضویت
    Jan 2019
    شماره عضویت
    9129
    نوشته ها
    12
    تشکر
    4
    تشکر شده 0 بار در 0 ارسال
    نقل قول نوشته اصلی توسط Jinjer نمایش پست ها
    برای Log گرفتن چند تا راه هست، یکیش همون Logcat هست، یکی دیگه موقع Build گرفتن گزینه های Development Build و Script Debugging رو که تیک بزنی و گوشی رو با USB و حالت USB Debugging وصل کنی به کامپیوتر و Build and Run بزنی، میتونی داخل Editor و توی صفحه Console همون Log های بازی رو ببینی.
    راه دیگه هم این asset هست، دانلود کن، Prefab که گفته رو بنداز تو Scene و وقتی بازی رو تو گوشی اجرا کردی یه دایره با دستت بکش رو صفحه، لاگ میاد.
    https://assetstore.unity.com/packages/tools/integration/log-viewer-12047


    ببین من راه کارهایی که میتونی انتخاب کنی رو دادم، اینکه چجوری کار می کنه دیگه باید یاد بگیری، من اگه بخوام توضیح بدم اینجا 3 صفحه باید بنویسم. اگر انگلیسیت خوبه همون منابعی که دادم همه چیزو کامل توضیح داده، که چه جوری Asset Bundle بسازی و دانلود کنی. توی یوتیوب و حتی خود سایت یونیتی پر از آموزشه. اگر انگلیسیت خوب نیست من منبع فارسی قوی نمیشناسم ولی مطمئنم یکم سرچ کنی پیدا میشه.
    برای Addressables بعید میدونم منبع فارسی پیدا کنی چون چیز جدیدیه، ولی همون دو تا لینکی که فرستادم انگلیسی و کامله. Addressables راحت ترین و بهترین روشه برای کاری که شما میخوای، اگر انگلیسیت خوبه برو سراغش، اگر نه آموزش فارسی برای Asset Bundle پیدا کن.

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


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

    <ObjectTracker>() به <objecttracker>() ابتدا خطایی داد که مربوط به خط 30 میشد که با تغییر


    RuntimeImageSourceمشکل حل شد اما بعدش از خط 38 خطا میگیره و از




    ارور این هستش:
    Assets\downloadtarget.cs(32,56): error CS1061: 'ObjectTracker' does not contain a definition for 'RuntimeImageSource' and no accessible extension method 'RuntimeImageSource' accepting a first argument of type 'ObjectTracker' could be found (are you missing a using directive or an assembly reference?)




    کد:

    using UnityEngine;
    using UnityEngine.Networking;
    using System.Collections;
    using Vuforia;


    public class DownLoadIT : MonoBehaviour
    {


    void Start()
    {
    StartCoroutine(CreateImageTargetFromDownloadedTexture());
    }


    IEnumerator CreateImageTargetFromDownloadedTexture()
    {
    using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture("https://myPage.com/myImage.jpg"))
    {
    yield return uwr.SendWebRequest();


    if (uwr.isNetworkError || uwr.isHttpError)
    {
    Debug.Log(uwr.error);
    }
    else
    {
    var objectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();


    // Get downloaded texture once the web request completes
    var texture = DownloadHandlerTexture.GetContent(uwr);


    // get the runtime image source and set the texture
    var runtimeImageSource = objectTracker.RuntimeImageSource;
    runtimeImageSource.SetImage(texture, 0.15f, "myTargetName");


    // create a new dataset and use the source to create a new trackable
    var dataset = objectTracker.CreateDataSet();
    var trackableBehaviour = dataset.CreateTrackable(runtimeImageSource, "myTargetName");


    // add the DefaultTrackableEventHandler to the newly created game object
    trackableBehaviour.gameObject.AddComponent<DefaultTrackableEventHandler>();


    // activate the dataset
    objectTracker.ActivateDataSet(dataset);


    // TODO: add virtual content as child object(s)
    }
    }
    }
    }




    ویرایش توسط taghdir : 12-23-2019 در ساعت 05:25 PM

  8. Top | #16

    عنوان کاربر
    تاریخ عضویت
    Jan 2019
    شماره عضویت
    9129
    نوشته ها
    12
    تشکر
    4
    تشکر شده 0 بار در 0 ارسال
    البته مشکل بالا با اضافه کردن دستی package برطرف شد اما باگ های جدیدی ایجاد شده
    مثلا در package manage ،
    vuforia engin ar
    همچین خطایی داده:
    package has invalid dependencis:
    com.unity.ugui: package[com.unity.ugui@1.0.0]cannot be found

    Assembly with name 'VuforiaEditorScripts' already exists (Packages/com.ptc.vuforia.engine/Vuforia/Editor/Scripts/VuforiaEditorScripts.asmdef)
    Assembly with name 'VuforiaScripts' already exists (Packages/com.ptc.vuforia.engine/Vuforia/Scripts/VuforiaScripts.asmdef)
    ویرایش توسط taghdir : 12-23-2019 در ساعت 05:56 PM

صفحه 2 از 2 نخستنخست 12

اطلاعات موضوع

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

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

بازدید کنندگانی که با جست و جو این صفحه را مشاهده کرده اند:

Nobody landed on this page from a search engine, yet!

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •