Başka bir sahnenin içeriğini doku olarak görüntülemek için doku oluşturma özelliğini kullanma

Sayfa güncel :
Sayfa oluşturma tarihi :

Doğrulama ortamı

Windows
  • Pencereler 11
Birlik Editörü
  • 2021.3.3f1
Giriş Sistemi Paketi
  • 1.3.0

Bu ipucu için önkoşullar

Aşağıdaki ayarlar, bu ipucunun açıklaması için bir öncül olarak önceden yapılmıştır.

İlk başta

Render dokuları, çizimlerinizi ekran yerine bir dokuya yazmanıza olanak tanır. Bu, oyun yürütme sırasında doku görüntülerini önceden hazırlamadan serbestçe doku oluşturmanıza olanak tanır.

Ayrıca, örneğin oyunda var olan bir ekranda ana kameradan farklı bir görüntü yansıtmak için her kareyi dinamik olarak değiştiren bir işleme dokusuna da yazabilirsiniz.

Görüntüleri Hazırlama

İşleme dokusu kullanırken, görüntü hazırlamanıza gerek yoktur, ancak çizim sonucunun daha kolay anlaşılmasını sağlamak için bunu örnek olarak hazırlayabilirsiniz.

İşleme Dokusu Oluşturma

Projeden bir varlık oluşturun. Oluştur'dan Doku Oluştur'u seçin.

Ad keyfi olabilir. Ad şu anda doğrudan NewRenderTexture dışarıdan belirtilmediğinden, olarak bırakın.

İşleme dokusunu seçin ve boyutunu Denetçi'den belirtin. İşleme dokusu bir çizim alanı olduğundan, bir boyut belirtmeniz gerekir. Bu sefer ayrı ayrı oluşturulmuş bir sahne yazmak istiyorum, bu yüzden en boy oranını 16:9 olarak ayarladım.

İşleme Dokusu Hedefini Ayarlama

Başlangıçta oluşturulan sahnenin hiyerarşisinden "UI" > "Raw Image" ı seçin. Bu nesnedeki işleme dokusunun içeriğini görüntüleyin. Kullanıcı arabiriminin bir nesnesidir, ancak ihtiyacınız olan şey, başka bir nesneye ayarlanabilen bir "Ham Görüntü" bileşenidir.

RawImage yerleştirildi. Bu bir UI nesnesi olduğundan, bir Kanvasa yerleştirilir. Henüz hiçbir şey ayarlamadım, bu yüzden sadece beyaz bir dikdörtgen alıyorum.

Ölçeğin birbirine eşit olmasını istiyoruz, bu nedenle RawImage nesnesinin boyutunu render dokusuyla aynı olacak şekilde ayarlıyoruz. En boy oranını aynı tutarsanız, boyutu değiştirseniz bile çizim sonucu yalnızca ölçeklendirilir, ancak en boy oranını değiştirirseniz, çizim sonucu dikey veya yatay olarak ezilir.

RawImage nesnesinin Raw Image bileşeninin bir "dokusu" vardır, bu nedenle orada oluşturduğunuz oluşturma dokusunu ayarlayın. İşleme dokusunun içeriği hala boştur, bu nedenle görünümde saydamdırlar.

Doku çizim içeriği oluşturma sahnesi oluşturma

Ardından, oluşturma dokusunda çizilecek içeriği oluşturmak için yeni bir sahne oluşturun. Menüden Dosya'yı ve ardından Yeni Sahne'yi seçin.

Bu örnek 2B olduğundan, bir 2B sahne de seçersiniz.

Sahne klasöründe oluşturun. SampleSceneTexture Adı olarak bırakın.

Sahneyi oluşturduktan sonra, nesneleri uygun şekilde yerleştirin. Tek yapmanız gereken, oluşturma dokusunun içeriğini bildiğinizden emin olmaktır. Kameranın dışına taşan herhangi bir şeyin çizilmediğini doğrulamak için, kamera çerçevesinin yanına bir hareketli grafik de yerleştirilir.

Nesneler çakışırsa, nesnelerin bağlamı belirsiz olacaktır, bu nedenle bir arka planınız varsa, arka plan katmanlarının sırasını düşürün.

"MainCamera" yı seçtikten sonra, oluşturma dokusunu "Hedef doku" da ayarlayın. Bu, çizimin oluşturma dokusunda çizilmesine neden olur.

MainCamera olarak ayarlanmış Ses Dinleyicisi bileşenini kaldırın. Bir render dokusu için ihtiyacınız olan tek şey çizim yapmaktır, bu nedenle Ses Dinleyicisine ihtiyacınız yoktur. Çalışma zamanında birden fazla "Ses Dinleyicisi" varsa bir uyarı görüntülenir.

Bu arada, oluşturma dokusu için sahneyi bu durumda çalıştırırsanız, ekranda hiçbir şey görüntülenmez. Bunun nedeni, bir render dokusu üzerinde çizim yapıyor olmanızdır. Ekranda kontrol etmek istiyorsanız, "hedef dokuyu" silin ve ardından çalıştırın.

Katman ayarları

Bu örnekte, iki sahneyi aynı anda taşımanız gerekecek, ancak bunları oldukları gibi hareket ettirirseniz, oluşturma dokusunda çizilecek içerikler de ana ekranda görüntülenecek, böylece katmanlar ayrı ayrı çizilmeyecektir.

İlk olarak, düzenleyicinin sağ üst köşesindeki katmandan "Katmanı Düzenle" yi seçin.

İsim ve konum keyfidir, ancak burada adlı yeni RenderTarget bir katman ekleyeceğiz .

Katmanı ekledikten sonra, oluşturma dokusunun sahnesini açın, çizmek istediğiniz tüm nesneleri seçin ve katman değerini yeni oluşturduğunuz RenderTarget değerle değiştirin.

SampleSceneTexture Bu, sahnenin düzenlenmesini sonlandırır, bu yüzden lütfen kaydedin.

İşleme Dokularını Görüntüleme

SampleScene Bir sahneyi açtıktan sonra, sahneyi sürükleyip bırakarak hiyerarşiye SampleSceneTexture ekleyin. Daha sonra hiyerarşide iki sahne olmalı ve sahnenin içeriği ekranda görüntülenmelidir SampleSceneTexture .

SampleSceneTexture Sahnenin içeriği rahatsız edicidir, bu nedenle hiyerarşiden sahnenin göz simgesine SampleSceneTexture tıklayın. SampleSceneTexture Bu, sahnedeki nesneleri gizler ve yalnızca sahnenin SampleScene içeriği görünür. Bu arada, tüm render dokusu ayarları tamamlandığından,SampleScene render dokusunun içeriği sahneye yerleştirilen ham görüntüde görüntülenmelidir.

Bununla birlikte, göz tarafından gizleme simgesi yalnızca editörde görünmez hale getirmek için bir ayardır, bu nedenle oyunu olduğu gibi çalıştırırsanızSampleSceneTexture, sahnenin içeriği de ekranda görüntülenir. SampleScene Ardından Sahne'yi Main Camera seçin ve Denetçi'de Toplama Maskesinden RenderTarget seçeneğinin işaretini Camera kaldırın. Bu, oyun çalıştığında katmandaki nesnelerin görüntülenmesini RenderTarget engeller.

Oyunu çalıştırmayı deneyin. Amaçlandığı gibi görünmelidir.

İşleme dokusunu taşımayı deneyin

Bununla birlikte, bu durumda, gerçekten bir render dokusu olarak mı çalıştığını yoksa görüntüyü bir kırpma olarak mı görüntülediğini bilmek zordur, bu yüzden onu taşıyalım.

İçerik herhangi bir şey olabilir, ancak burada hareketi hareketli grafiği otomatik olarak döndürecek şekilde ayarlayacağız. Bir SelfRotate komut dosyası oluşturun ve olarak oluşturun.

Burada, kendini azar azar döndürmenin basit bir sürecini dahil edeceğiz.

using UnityEngine;

public class SelfRotate : MonoBehaviour
{
  // 更新はフレームごとに 1 回呼び出されます
  void Update()
  {
    transform.Rotate(0, 0, 0.1f);
  }
}

Komut dosyasını oluşturduktan sonra, döndürmek istediğiniz nesneye giderek daha fazla ekleme yapın.

Sonra oyunu çalıştırın ve dönüp dönmediğine bakın. Sanırım nesnenin render dokusunda hareket ettiğini görebiliyorsunuz.

Aynı anda birden fazla sahne nasıl taşınır

Burada, basit bir örnek oluşturduk, böylece başlangıçtan itibaren çalışan iki sahnemiz var, ancak gerçek bir oyunda, tek bir sahneyle başlamanız gereken birçok durum var. Bu durumda, birden fazla sahne yapmak için sahnenin başına dinamik olarak sahneler eklemeniz gerekeceğini düşünüyorum.

Sahnenin nasıl ekleneceğinin açıklaması için lütfen "Sahne ekleme" konusuna bakın. Temel olarak, SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive); arama yapmak sorunların çoğunu çözmelidir.

İşleme dokusunun içeriğinin katmanlar kullanılmadan ana ekranda görünmesini engelleme

Ana sahne ve render dokusu sahnesi aynı yerde olduğu için render dokusunun içeriği ana ekranda görüntülenir. Bu nedenle, oluşturma dokusunun içeriğini ana sahnede hiç gösterilmeyen bir yere taşırsanız, ana ekranda görüntülenmez. Örneğin, bir işleme dokusu nesnesini veya kamerayı (-10000, -10000) konumuna taşıyabilirsiniz. Bu şekilde, katman ayarları gereksizdir.

Bir render dokusunun içeriğini farklı sahnelere bölmeden bir sahnede tamamlamak istediğinizde

Bu, katmanlar olmadan önceki yöntemle aynı teknik kullanılarak yapılır. İşleme dokusu tarafından görüntülenen içeriği, ana kamerada asla görüntülenmeyecekleri bir yere taşıyabilirsiniz. Sahneleri ayırma yönteminden farkı, iki kamera yerleştirmeniz gerektiğidir, ancak bunun dışında, temel olarak sahneleri ayırma yöntemiyle aynı ayarlara sahip olacaksınız.

Bir 3B oyunda farklı bir perspektiften yakalanan içeriği render dokusu olarak yakalamak istiyorsanız

Bu ipucu 3D hakkında fazla konuşmadı çünkü 2D'ye odaklandı, ancak yaklaşım temelde aynı. Tek bir 3B alanı birden fazla perspektiften yansıttığınız için, ikiden fazla sahneye sahip olmanıza gerek yoktur. Tek yapmanız gereken, ihtiyacınız olduğu kadar kamera yerleştirmek, çizim hedefini oluşturma dokusu olarak ayarlamak ve oluşturma dokusunun nerede görüntüleneceğini ayarlamaktır.