Visual Studio’da Faydalandığım Kısayollar

Yayınlandı: 08 Eylül 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Merhabalar,

Bu kısa derste, Unity‘de Visual Studio Community Edition 2017/2019 ile C# script yazarken kullandığım birkaç klavye kısayolundan bahsedeceğim.

Hemen derse başlayalım…

  • CTRL+K ve hemen akabinde CTRL+C: seçili satır(lar)ı // ile comment’lemeye yarar. Eğer tek bir satırın içindeki bir parça seçili ise, seçili parçayı /* ve */ ile comment’lemeye yarar:
  • CTRL+K ve hemen akabinde CTRL+U: seçili satır(lar)ın comment’ini kaldırmaya yarar
  • CTRL+T: bunu yakın zamanda öğrendim ve o zamandan beri favorilerim arasında. Bu kısayol ekranın sağ üstünde bir arama kutucuğu çıkarır. Bu arama kutucuğuna istediğiniz script’in adını yazarak, hızlıca o script’e geçiş yapabilirsiniz:
  • CTRL+G: şu anda açık olan script’te belli bir satıra zıplamaya yarar:
  • CTRL+Shift+F: tüm projede bir metni aramaya yarar. Bunun için “Look in“in değerini “Entire solution” yapmanız yeterli. İsterseniz “Look in”in sağındaki 3 nokta butonuna tıklayarak, belli bir klasör içinde de arama yapabilirsiniz:
  • CTRL+Nokta (.): seçili satırda bir hata varsa, o hatayı düzeltmek için olası tüm çözümleri gösterir. Örneğin bir class’ı kullanabilmek için kodun başına bir using eklemek gerekiyorsa, bu şekilde o using’i otomatik olarak ekleyebilirsiniz:
  • CTRL+Space: eğer imleç henüz isminin tamamı girilmemiş bir değişken, fonksiyon veya class üzerinde duruyorsa, orada auto-complete penceresini gösterir:
  • CTRL+Shift+Space: eğer imleç bir fonksiyonun parantezleri arasındaysa, o fonksiyonun aldığı tüm parametreleri listeler. Eğer fonksiyonun birden çok overload’u varsa (aynı isme sahip ama parametreleri farklı fonksiyonlar), bu overload’lar arasında gezmek için yukarı-aşağı ok tuşlarını kullanabilirsiniz:
  • CTRL+R ve hemen akabinde CTRL+R: seçili değişkenin, fonksiyonun, class’ın veya parametrenin ismini, kullanıldığı tüm yerlerde değiştirmeye yarar:
  • CTRL+Sol ve sağ ok tuşları: imleci kelime kelime sola sağa atlatmaya yarar
  • CTRL+Backspace: kodu harf harf değil de kelime kelime silmeye yarar:
  • CTRL+Yukarı ve aşağı ok tuşları: kodu yukarı aşağı scroll yapmaya yarar
  • Alt+Yukarı ve aşağı ok tuşları: seçili satır(lar)ı yukarıya aşağıya taşımaya yarar:
  • CTRL+D: seçili satırı klonlamaya yarar:
  • CTRL+Enter: imlecin bulunduğu satırı ve altındaki tüm satırları, bir satır aşağıya kaydırır. Bu esnada imleç yerinden kımıldamaz:
  • Birkaç satır seçili iken Tab: seçili satırları bir tab ileriye taşır:
  • Birkaç satır seçili iken Shift+Tab: seçili satırları bir tab geriye taşır
  • for yazıp akabinde iki kere Tab’e basmak: otomatik olarak bir for loop’u oluşturur. Aynı şey while, do, switch ve if için de geçerli:
  • CTRL+Alt basılı iken mouse ile kodda farklı yerlere tıklamak: kodda birden çok imleç oluşturur. Klavye ile yaptığınız tüm eylemler, bu imleçlerin hepsine uygulanır. Örneğin belli bir metni tüm bu satırlara aynı anda yazmak ya da tüm bu satırlardan aynı anda silmek için kullanılabilir:

Bu kısayollara ilave olarak, klavye kısayolu olmayan ama zaman zaman çok işe yarayan kod ipuçları verecek olursam:

  • Bazen kodunuza bir using eklediğinizde, daha önce hata vermeyen bazı satırlarınızın hata vermeye başladıklarına şahit olabilirsiniz. Örneğin Object.Destroy(birObje); fonksiyonunu kullanırken kodun başına using System; eklerseniz, “CS0104 Error: ‘Object’ is an ambiguous reference between ‘UnityEngine.Object’ and ‘object’” hatası alırsınız çünkü hem UnityEngine hem de System namespace’lerinde Object isimli bir class bulunmaktadır ve kodumuzda kullandığımız Object’in hangi namespace’e ait olduğu belirsizdir. Bunu çözmek için Object.Destroy’u UnityEngine.Object.Destroy yapabileceğiniz gibi, kodun başına using Object = UnityEngine.Object; satırını da ekleyebilirsiniz. Bu durumda kodda kullandığınız tüm Object’ler UnityEngine.Object olarak varsayılır (siz System.Object şeklinde elle aksini söylemediğiniz sürece)
  • [SerializeField]‘lı değişkenleriniz Unity konsolunda “warning CS0649: Field ‘variable’ is never assigned to, and will always have its default value null” uyarısı verebilir. Bu uyarıların gitmesini istiyorsanız, [SerializeField] değişkenlerinizi #pragma warning disable 0649 ve #pragma warning restore 0649 satırları arasına yerleştirebilirsiniz:
#pragma warning disable 0649
[SerializeField]
private float movementAreaRadius = 75f;

[SerializeField]
private bool isDynamicJoystick = false;
#pragma warning restore 0649

Dersin faydalı olması dileğiyle!

yorum
  1. Adem DEMİR dedi ki:

    Merhaba Yasir bey,
    Belirttiğiniz gibi; error CS0029: Cannot implicitly convert type ‘TimerManager[]’ to ‘TimerManager’
    gibi yani “CS0104 Error: ‘Object’ is an ambiguous reference between ‘UnityEngine.Object’ and ‘object’” hatası alıyorum. bunun Unity objesi olduğunu her şekilde ( using ile, UnityEngine.Object.. gibi) ollar ile belirtmeme rağmen hata gitmiyor. birkaç kere silip tekrar yazınca vs. farklı bir şey yapmama rağmen hata kayboluyor. Ama gereksiz yere bazen çok fazla vakit kaybettiriyor. Sizce neden kaynaklanıyor olabilir? Kodum aşağıdaki gibi.

    TimerManager timerManager;

    private void Awake()
    {

    timerManager = Object.FindObjectsOfType();
    }

    teşekkürler.

    • yasirkula dedi ki:

      using Object = UnityEngine.Object; yazdığım zaman ben artık hiç ambiguous hatasını almıyorum, sizde niye oluyor onu ben de anlamadım. Kodunuzdaki asıl hata ise, FindObjectOfType yerine FindObjectsOfType kullanmanız.

Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.