ডেভসংকেত

ইউনিটি গেইম ইঞ্জিন

জনপ্রিয় ইউনিটি গেইম ইঞ্জিনের প্রয়োজনীয় হট-কী এবং কোড স্নিপেট

কন্ট্রিবিউটর

    শেয়ার করুন

    হট-কী

    • প্যান টুল

      Q
    • মুভ টুল

      W
    • রোটেট টুল

       E
    • স্কেল টুল

      R
    • রেক্ট টুল

      T
    • অরবিট ন্যাভিগেশন

      Alt+LMB
    • ড্রাগ ন্যাভিগেশন (Drag)

      Alt+MMB
    • জুম (Zoom)

      Scroll wheel
    • নতুন এম্পটি গেইম অবজেক্ট বানাতে

      Ctrl+Shift+N
    • চাইল্ডের মধ্যে নতুন এম্পটি গেইম অবজেক্ট বানাতে

      Alt+Shift+N
    • সিলেক্টেড গেইম অবজেক্ট ডুপ্লিকেট করতে

      Ctrl+D
    • পূর্বাবস্থায় ফেরা (Undo)

      Ctrl+Z
    • পুনরায় করা (Redo)

      Ctrl+Y
    • সব সিলেক্ট করা (Select All)

      Ctrl+A
    • ইনভার্ট সিলেকশন (Invert Selection)

      Ctrl+I
    • সব ডিসিলেক্ট করা (Deselect All)

      Shift+D
    • গেইম অবজেক্ট খুজা (Find Object)

      Ctrl+F
    • গেইম অবজেক্ট ডিলিট করা

      Delete
    • ভিউ এর সাথে এলাইন করা (Align with view)

      Ctrl+Shift+F
    • প্লে/আন-প্লে (Play/Unplay)

      Ctrl+P
    • পজ/আন-পজ (Pause/Unpause)

      Ctrl+Shift+P
    • পরবর্তী ফ্রেমে যাওয়া (Step)

      Ctrl+Alt+P
    • সিলেক্টেড অবজেক্ট ভিউ এর সেন্টারে আনা

      F
    • সিলেক্টেড অবজেক্টে ভিউ লক করা

      Shift+F
    • ম্যাক্সিমাইজ/মিনিমাইজ উইন্ডো

      Shift+Space
    • বিল্ড এন্ড রান (Build and Run)

      Ctrl+B
    • বিল্ড সেটিংস ওপেন করা

      Ctrl+Shift+B
    • নতুন Scene বানানো

      Ctrl+N
    • Scene ওপেন করা

      Ctrl+O
    • Scene সেইভ করা

      Ctrl+S
    • Scene Save As প্রম্পট

      Ctrl+Shift+S
    • এসেট ডেটাবেজ রিফ্রেশ

      Ctrl+R

    গেইম অবজেক্ট

    • নতুন গেইম অবজেক্ট বানাতে

      Instantiate(GameObject go);
    • নতুন গেইম অবজেক্ট বানাতে (পজিশন,রোটেশন সহ)

      Instantiate(GameObject go, Vector3 position, Quaternion rotation);
    • গেইম অবজেক্ট খুজতে

      GameObject.Find("গেইম_অবজেক্টের_নাম");
    • গেইম অবজেক্ট খুজতে (গেইম অবজেক্টে প্যারেন্ট থাকা যাবে না)

      GameObject.Find("/গেইম_অবজেক্টের_নাম");
    • কোনো প্যারেন্ট থেকে চাইল্ড গেইম অবজেক্ট খুজতে

      GameObject.Find("প্যারেন্টের_নাম/চাইল্ডের_নাম/গেইম_অবজেক্টের_নাম");
    • একই ট্যাগযুক্ত গেইম অবজেক্টদ্বয় খুজতে

      GameObject.FindGameObjectsWithTag("ট্যাগের_নাম");
    • কোনো ট্যাগযুক্ত গেইম অবজেক্ট খুজতে (একই ট্যাগের সর্বপ্রথম যেই গেইমঅবজেক্ট খুজে পাবে)

      GameObject.FindWithTag("ট্যাগের_নাম");
    • গেইম অবজেক্টের নাম

      go.name;
    • গেইম অবজেক্ট এক্টিভ করতে

      go.SetActive(true);
    • গেইম অবজেক্ট ডি-এক্টিভ করতে

      go.SetActive(false);
    • গেইম অবজেক্ট ডিস্ট্রয় করতে

      Destroy(gameObject);
    • গেইম অবজেক্ট থেকে কোনো কম্পোনেন্ট নিতে

      go.GetComponent<কম্পোনেন্ট_টাইপ>();
    • প্যারেন্ট গেইম অবজেক্ট থেকে কোনো কম্পোনেন্ট নিতে

      go.GetComponentInParent<কম্পোনেন্ট_টাইপ>();
    • চাইল্ড গেইম অবজেক্ট থেকে কোনো কম্পোনেন্ট নিতে (চাইল্ড থেকে সর্বপ্রথম যেটা খুজে পাবে)

      go.GetComponentInChildren<কম্পোনেন্ট_টাইপ>();
    • চাইল্ড গেইম অবজেক্ট (ইন-একটিভ সহ) থেকে কোনো কম্পোনেন্ট নিতে (চাইল্ড থেকে সর্বপ্রথম যেটা খুজে পাবে)

      go.GetComponentInChildren<কম্পোনেন্ট_টাইপ>(true);
    • গেইম অবজেক্টের পজিশন সেট করা

      go.transform.position = new Vector3(5f, 1f, 10.5f);
    • গেইম অবজেক্টের রোটেশন সেট করা

      go.transform.eulerAngles = new Vector3(60f, 0f, 30f);

    টাচ ইনপুট

    • স্ক্রিনে টাচের সংখ্যা

      Input.touchCount
    • নির্দিষ্ট কোনো টাচের ইনফোরমেশন (Touch স্ট্রাক্ট)

      Touch touch = Input.GetTouch(n); //n টাচের ইন্ডেক্স, 0 মানে প্রথম টাচের ইনফো নিবে
    • নির্দিষ্ট কোনো টাচের স্ক্রিন পজিশন

      Vector3 touchPosition = touch.position;
    • নির্দিষ্ট কোনো টাচের স্ক্রিন পজিশন স্কিন স্পেস থেকে ওয়ার্ল্ড স্পেসে কনভার্সন

      Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
    • নির্দিষ্ট কোনো টাচের দশা

      Touch touch = Input.GetTouch(0);
       switch (touch.phase)
       {
       //যখন টাচ সনাক্ত হয় 
       case TouchPhase.Began:
       break;
       //যদি টাচটি মুভিং হয় 
       case TouchPhase.Moved:
       break;
       //যখন টাচটি শেষ হয়ে যায় 
       case TouchPhase.Ended: 
       break; 
       } 
      

    ফিজিক্স ইভেন্টস

    • দু'টি গেইমঅবজেক্টের মধ্যে সংঘর্ষ হলে

      void OnCollisionEnter(Collision col) { Debug.log(gameObject.name + "Hits" + col.gameObject.name); }
    • দু'টি গেইমঅবজেক্টের মধ্যে সংঘর্ষ চলমান থাকলে

      void OnCollisionStay(Collision col) { Debug.log(gameObject.name + "Hitting" + col.gameObject.name); }
    • দু'টি গেইমঅবজেক্টের মধ্যে সংঘর্ষ শেষ হলে

      void OnCollisionExit(Collision col) { Debug.log(gameObject.name + "Stopped hitting" + col.gameObject.name); }
    • ট্রিগার ইনেবলড দু'টি গেইমঅবজেক্টের মধ্যে সংঘর্ষ হলে

      void OnTriggerEnter(Collider col) { Debug.log(gameObject.name + "Hits" + col.gameObject.name); }
    • ট্রিগার ইনেবলড দু'টি গেইমঅবজেক্টের মধ্যে সংঘর্ষ চলমান থাকলে

      void OnTriggerStay(Collider col) { Debug.log(gameObject.name + "Hitting" + col.gameObject.name); }
    • ট্রিগার ইনেবলড দু'টি গেইমঅবজেক্টের মধ্যে সংঘর্ষ শেষ হলে

      void OnTriggerExit(Collider col) { Debug.log(gameObject.name + "Stopped hitting" + col.gameObject.name); }
    • 2D গেইমঅবজেক্টের ফিজিক্স ইভেন্টের জন্য মেথড ও প্যারামিটারগুলোর শেষে 2D লাগাতে হবে

      void OnCollisionEnter2D(Collision2D col) { Debug.log(gameObject.name + "Hits" + col.gameObject.name); }

    সিন(Scene) ম্যানেজমেন্ট

    • প্রয়োজনীয় ডিরেক্টিভ

      using UnityEngine.SceneManagement;
    • কোনো scene লোড করা

      SceneManager.LoadScene("SceneName");
    • কোনো scene ব্যাকগ্রাউন্ডে asynchronously লোড করা

      SceneManager.LoadSceneAsync("SceneName");
    • বর্তমান scene

      Scene scene = SceneManager.GetActiveScene();
    • বর্তমান scene রিলোড করা

      SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    • নাম দ্বারা scene পাওয়া

      Scene scene = SceneManager.GetSceneByName("SceneName");
    • এক scene থেকে অন্য scene এ গেইমঅবজেক্ট পাঠানো

      SceneManager.MoveGameObjectToScene(gameObject, SceneManager.GetSceneByName("SceneName"));
    • scene change এর সময় কোনো অবজেক্ট ডিস্ট্রয় না করা

      DontDestroyOnLoad(gameObject);
    • এক্টিভ scene change হওয়ার ইভেন্ট

      SceneManager.activeSceneChanged += (currentScene, nextScene) => { };

    অডিও

    • ভ্যারিয়েবলে অডিও ক্লিপ স্টোর করা

      public AudioClip clip;
    • গেইম অবজেক্ট থেকে অডিও সোর্স কম্পোনেন্ট নেওয়া

      AudioSource audioSource = go.GetComponent<AudioSource>();
    • অডিও সোর্সে থাকা ক্লিপ প্লে করতে (চলাকালীন সময় পুনরায় কল করলে পুনরায় প্লে হবে)

      audioSource.Play();
    • অডিও সোর্সে কোনো ক্লিপ সম্পূর্ন একবার প্লে করতে (চলাকালীন সময় পুনরায় কল করলে পূর্ববর্তী ক্লিপ শেষ হওয়ার পর প্লে হবে)

      audioSource.PlayOneShot(clip);
    • অডিও সোর্স থামাতে (PlayOneShot() দ্বারা চালিত ক্লিপ থামবে না)

      audioSource.Pause();
    • অডিও সোর্স বন্ধ করতে (PlayOneShot() দ্বারা চালিত ক্লিপ বন্ধ হবে না)

      audioSource.Stop();
    • অডিও সোর্সের ভলিউম (0~1)

      audioSource.volume = 0.5f;
    • অডিও সোর্সের পিচ (-3~3)

      audioSource.pitch = 2f;

    মনো বিহেভিওর ইভেন্ট ফাংশন (ক্রমানুসারে)

    • void Awake() { /*স্ক্রিপ্ট লোড হওয়ার সময় কল হয়। আবার গেইম শুরু হওয়ার একেবারে প্রথমে কল হয়।*/ }
    • void OnEnable() { /*অবজেক্ট ইনেবল হওয়ার সময় কল হয়*/ }
    • void Start() { /*গেইম শুরুর প্রথম ফ্রেমে, প্রথম আপডেটের আগে কল হয়। শুধু একবারই কল হয়*/ }
    • void FixedUpdate() { /*নির্দিষ্ট কিছু সময় পর পর বারবার কল হয়, ফ্রেমের উপর নির্ভরশীল নয়। ফিজিক্স ইভেন্টগুলো এরপর কল হয়*/ }
    • void Update() { /*প্রত্যেক ফ্রেমে একবার কল হয়*/ }
    • void LateUpdate() { /*প্রত্যেক ফ্রেমে আপডেট কল হওয়ার পর একবার কল হয়*/ }
    • void OnBecameVisible() { /*কোনো renderer কোনো ক্যামেরা দ্বারা দৃশ্যমান হলে কল হয়*/ }
    • void OnBecameInvisible() { /*কোনো renderer কোনো ক্যামেরা দ্বারা অদৃশ্যমান হলে কল হয়*/ }
    • void OnPreRender() { /*ক্যামেরা scene রেন্ডার শুরু করার পূর্বমূহুর্তে কল হয়*/ }
    • void OnRenderObject() { /*ক্যামেরা scene রেন্ডার শেষ করার সময় কল হয়*/ }
    • void OnPostRender() { /*ক্যামেরা scene রেন্ডার শেষ করার পর কল হয়*/ }
    • void OnApplicationPause() { /*ফ্রেমের শেষে কল হয় যদি গেইম পজ করা হয়*/ }
    • void OnApplicationQuit() { /*গেইম কুইট করার পূর্বমূহুর্তে কল হয়*/ }
    • void OnDisable() { /*কোনো অবজেক্ট ডিজেবল হলে কল হয়*/ }
    • void OnDestroy() { /*পূর্বে এক্টিভ ছিলো এমন গেইম অবজেক্ট ডিস্ট্রয় হলে কল হয়*/ }

    ইনপুট (লেগাসি)

    • কোনো কী(Key) চাপা হয়েছিলো কিনা

      if (Input.GetKeyDown(KeyCode.Return)) { Debug.Log("Return key was pressed."); }
    • কোনো কী(Key) ছেড়ে দেওয়া হয়েছিলো কিনা

      if (Input.GetKeyUp(KeyCode.Return)) { Debug.Log("Return key was released."); }
    • কোনো কী(Key) চেপে রাখা হয়েছে কিনা

      if (Input.GetKey(KeyCode.Return)) { Debug.Log("Return key is being held down"); }
    • মাউসের প্রাইমারি (LMB) বাটন চাপা হয়েছিলো কিনা

      if (Input.GetMouseButtonDown(0)) { Debug.Log("Mouse Primary Button was pressed."); }
    • মাউসের প্রাইমারি (LMB) বাটন ছেড়ে দেওয়া হয়েছিলো কিনা

      if (Input.GetMouseButtonUp(0)) { Debug.Log("Mouse Primary Button was released."); }
    • মাউসের প্রাইমারি (LMB) বাটন চেপে রাখা হয়েছে কিনা

      if (Input.GetMouseButton(0)) { Debug.Log("Mouse Primary Button is being held down."); }
    • মাউসের সেকেন্ডারি (RMB) বাটন চাপা হয়েছিলো কিনা

      if (Input.GetMouseButtonDown(1)) { Debug.Log("Mouse Secondary Button was pressed."); }
    • মাউসের মিডল/স্ক্রল-হুইল (MMB) বাটন চাপা হয়েছিলো কিনা

      if (Input.GetMouseButtonDown(২)) { Debug.Log("Mouse Middle Button was pressed."); }
    • কোনো এক্সিসের ইনপুট ভ্যালু (-1~1)

      float value = Input.GetAxis("এক্সিসের নাম (Edit > Project Settings > Input)");
    • হরিজন্টাল এক্সিসের ইনপুট ভ্যালু (-1~1)

      float value = Input.GetAxis("Horizontal");
    • হরিজন্টাল এক্সিসের raw (স্মুথিং বাদে) ইনপুট ভ্যালু (-1~1)

      float value = Input.GetAxisRaw("Horizontal");
    • ভার্টিকাল এক্সিসের ইনপুট ভ্যালু (-1~1)

      float value = Input.GetAxis("Vertical");
    • ভার্টিকাল এক্সিসের raw (স্মুথিং বাদে) ইনপুট ভ্যালু (-1~1)

      float value = Input.GetAxisRaw("Vertical");

    টাইম

    • গেইম শুরু থেকে বর্তমান পর্যন্ত অতিবাহিত সময় (সেকেন্ড)

      float timePassed = Time.time;
    • গেইমের বর্তমান টাইম স্কেল (১ = নরমাল)

      float currentTimeScale = Time.timeScale;
    • টাইম স্কেলের মাধ্যমে গেইম থামানো

      Time.timeScale = 0;
    • পূর্বের ফ্রেম সম্পন্ন হতে অতিবাহিত সময়

      float timePassedForLastFrame = Time.deltaTime;
    • ফিজিক্স ইভেন্ট সম্পন্ন হতে অতিবাহিত সময়

      float timePassedForPhysics = Time.fixedDeltaTime;

    কোরুটিন

    • কোরুটিনের উদাহরন

      IEnumerator WaitOneSecond()
       {
       yield return new WaitForSeconds(1.0f);
       Debug.Log("1 Second Passed...");
       }
    • কোরুটিন কল করা

      StartCoroutine(WaitOneSecond());
    • মেথডের নাম দ্বারা কোরুটিন কল করা

      StartCoroutine("WaitOneSecond");
    • ভ্যারিয়েবলে কোরুটিন স্টোর করা

      IEnumerator myCoroutine = WaitOneSecond();
    • ভ্যারিয়েবল থেকে কোরুটিন কল করা

      StartCoroutine(myCoroutine);
    • স্টোর করা কোরুটিন বন্ধ করা

      StopCoroutine(myCoroutine);
    • মেথডের নাম দ্বারা কোরুটিন বন্ধ করা

      StopCoroutine("myCoroutine");
    • সকল কোরুটিন বন্ধ করা

      StopAllCoroutines();
    • পরবর্তী Update() পর্যন্ত অপেক্ষা করা

      yield return null;
    • পরবর্তী FixedUpdate() পর্যন্ত অপেক্ষা করা

      yield return new WaitForFixedUpdate();
    • বর্তমান ফ্রেমের সব এক্সিকিউট হওয়া অপেক্ষা করা

      yield return new WaitForEndOfFrame();
    • কিছু সময় অপেক্ষা করা (টাইম স্কেল অনুযায়ী)

      yield return new WaitForSeconds(2f);
    • কিছু সময় অপেক্ষা করা (Unscaled টাইম অনুযায়ী)

      yield return new WaitForSecondsRealtime(2f);
    • অন্য কোনো কোরুটিনের জন্য অপেক্ষা করা

      yield return StartCoroutine(AnotherCoroutine());
    • কোনো কন্ডিশনের জন্য অপেক্ষা করা

      yield return new WaitUntill(() => fatherInLaw.isAgreed == true);

    ইউজার ইন্টারফেইস

    • প্রয়োজনীয় ডিরেক্টিভ

      using UnityEngine.UI;
    • গেইম অবজেক্ট থেকে টেক্সট কম্পোনেন্ট নেওয়া

      Text myText = go.GetComponent<Text>();
    • গেইম অবজেক্ট থেকে ইমেজ কম্পোনেন্ট নেওয়া

      Image myImage = go.GetComponent<Image>();
    • টেক্সটের ভ্যালু পরিবর্তন

      myText.text = "This is a Text."
    • ফ্লোট/ইন্টিজার টেক্সটে ভ্যালু হিসেবে

      myText.text = myFloat.ToString(); অথবা myText.text = myFloat + "";
    • দশমিকের পর ৩ ঘর পর্যন্ত সংখ্যা দেখাতে (12.123)

      myText.text = myFloat.ToString("0.000");
    • ১০০ এর ছোট সংখ্যার আগে ০ দেখাতে (006)

      myText.text = myFloat.ToString("000");
    • ইমেজের কালারের আলফা ভ্যালু পরিবর্তন (0~1, 0 ট্রান্সপ্যারেন্ট)

      myImage.color = new Color(myImage.color.r, myImage.color.g, myImage.color.b, 0.1f);

    ম্যাথ ফাংশন

    • পরমমান বাহির করার জন্য

      Mathf.Abs(x)
    • সর্বনিম্ন এবং সর্বাধিক মানের মধ্যে সীমাবদ্ধ করা

      Mathf.Clamp(value, min, max)
    • দুটি বা ততোধিক সংখ্যার মধ্যে বড় সংখ্যা বাহির করার জন্য

      Mathf.Max(x,y)
    • দুটি বা ততোধিক সংখ্যার মধ্যে ছোট সংখ্যা বাহির করার জন্য

      Mathf.Min(x,y)
    • x টু দা পাওয়ার y এর জন্য

      Mathf.Pow(x,y)
    • বর্গমূল বাহির করার জন্য

      Mathf.Sqrt(x)
    • দশমিকের উপরের দিকের কাছের পূর্নসংখ্যা বাহির করার জন্য

      Mathf.Ceil(x)
    • দশমিকের নিচের দিকের কাছের পূর্নসংখ্যা বাহির করার জন্য

      Mathf.Floor(x)
    • ২ এর গুনিতক কিনা বাহির করার জন্য

      Mathf.IsPowerOfTwo(x)

    ডেভসংকেত সম্পর্কে

    ডেভসংকেত এর লক্ষ্য হচ্ছে বাংলাতে একটা বড় চিটশিটের ভান্ডার গড়ে তোলা। এটা সম্পূর্ণ স্বাধীন এবং ওপেন সোর্স গিটহাব অর্গানাইজেশন।

    স্পন্সর