Float ve Mathf
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 9 / 67.
Unity, konumlar, hızlar, açılar ve Time.deltaTime gibi değerleri float türünde tutar. C#, 0.5 değerini double olarak okur ve hassasiyet kaybı yaşanabileceğinden, belirtilmediği sürece bir double değeri float türüne dönüştürmez. Yeni başlayanların ilk betiklerinin neredeyse tamamında bu nedenle iki derleme hatası görülür:
float half = 0.5;ifadesiCS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffixhatasını verir.float s = Math.Sin(x);ifadesiCS0266: Cannot implicitly convert type 'double' to 'float'hatasını verir; çünküSystem.Mathdouble türüyle çalışır.
Çözümler: float sabitlerini f ile yazın ve Unity'nin Math için float sürümü olan Mathf'i kullanın (Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI). Bu sallanan şamandıra her iki hatayı da veriyordu; aşağıdaki değişiklikten sonra derlenir:
// önce: float y = 1 + Math.Sin(Time.time * 2) * 0.5;
float y = 1 + Mathf.Sin(Time.time * 2) * 0.5f;
transform.position = new Vector3(0, y, 0);1 ve 2 gibi tam sayılar için sonek gerekmez: bir int, herhangi bir kayıp olmadan float türüne dönüşür.
Görev
KolayKalp atmalı: boyutu 1'den 1.5'e kadar çıkar ve geri iner; saniyede üç kez, her eksende aynı şekilde. Betik derlenmiyor. Unity'nin float matematiğiyle ilgili hataları düzelt ve formülü aynı tut.
Console'daki hataları görmek için Play'e bas, hataları düzelt, ardından Check'e bas.
Kendin dene
using System;
using UnityEngine;
public class Pulse : MonoBehaviour
{
void Update()
{
float size = 1 + Math.Abs(Math.Sin(Time.time * 3)) * 0.5;
transform.localScale = new Vector3(size, size, size);
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1İlk Betiğiniz
Merhaba, UnityKüpü YerleştirHer Karede Hareket EtHer Saniye DönTuşlarla Yön VerÖzet: Küpü Sür4Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir YapıdırÖzet: Drone Pilotu7Proje: Yıldızı Yakala
YakalayıcıDüşen Bir Yıldız5Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarÖlçekNesnelere BakışBir Noktaya Doğru HareketTekrar: Yörüngedeki Ay6GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBir Bileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı