Mesh'i Unity'deki bir İnteraktif Bezden nasıl saklayabilirim?


10

Bir sahnenin başlangıcında, 'top' GameObject'in üzerinde konumlandırılmış 'sayfa' adı verilen GameObject var. Sayfada bir İnteraktif Kumaş bileşeni ve bir Kumaş Oluşturucu bulunur. İnteraktif Kumaş bileşeni için Mesh çok sayıda köşeye sahip bir düzlemdir. Çalışma zamanında levha topun üzerine düşer ve istediğim şekli oluşturur. Etkileşimli Kumaş bileşenini bu noktada devre dışı bırakırsam, sayfa ağı tam olarak istediğim gibi kalır, ancak bir Prefabrik olarak dışarı çekemem.

Herkes bu şeklin bir kopyasını almak için bir yol biliyor mu?

Örneğin, çalışma zamanında Mesh'i İnteraktif Kumaştan okuyarak ve sonra Mesh'i İnteraktif Kumaş bileşeni olmadan istediğim şekilde değiştirmek için bunu kullanarak.

Herhangi bir yardım büyük mutluluk duyacağız.


Alternatif olarak, blender gibi bir şeyde bez simülasyonu yapabilir, ağı kaydedebilir ve birliğe aktarabilirsiniz. Bunu çevrimiçi olarak nasıl yapacağınızla ilgili birçok ders var.
Peethor

Yanıtlar:


0

Basit bir davranış ve özel müfettiş yardımcı olacaktır. Bunu komut dosyalarınıza ekleyin:

using UnityEngine;
using UnityEditor;
using System.Collections;

public class SaveMeshBehaviour : MonoBehaviour
{
    public Mesh GetMesh()
    {
        return gameObject.GetComponent<MeshFilter>().sharedMesh;
    }
}

[CustomEditor(typeof(SaveMeshBehaviour))]
public class SaveMeshInspector : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Save"))
        {
            var saveB = target as SaveMeshBehaviour;
            if (saveB != null)
            {
                var mesh = saveB.GetMesh();

                var copy = Mesh.Instantiate(mesh);
                AssetDatabase.CreateAsset(copy, "Assets/NewMesh.asset");
                AssetDatabase.SaveAssets();
            }
        }
        GUILayout.EndHorizontal();
    }
}

Sonra sahnede kumaşınıza SaveMeshBehaviour ekleyin. Özel denetçi, yeni bileşenin bir Kaydet düğmesine sahip olmasını sağlar. Sahnenizi oynatırken kaydet düğmesine tıkladığınızda, düzlemin bir kopyası olan bir kafes kaydedilecektir.

Bu yardımcı olur umarım!


2
Teşekkürler, ancak MeshFilter bağlı olmadığından örneğim için çalışmayacak. Bunun nedeni, İnteraktif Kumaş bileşeninin Mesh'i tutmasıdır. Komut dosyanızı değiştirmeyi denedim ancak yalnızca "<InteractiveCloth> () .vertices" ve "<InteractiveCloth> () .mesh" öğelerine erişebiliyorum. Ben mesh örgü erişmek için komut dosyası kullandığımda sadece örgü örgü çıktı gibi değişmez düşünüyorum. Köşelerin değiştirildiğini düşünüyorum, ancak yeni bir kafes oluşturmak için bunu nasıl kullanacağımı bilmiyorum.
RebDev

Eğer köşe ve kafes dizisi alabilirsiniz. Mesh'i kopyalamayı deneyin ve ardından copy.vertices = cloth.vertices yukarıdaki gibi kopyadan bir varlık oluşturarak bunu izleyin. Çalışacağından emin değilim ama işe yarayabilir.
PatrickSharbaugh

Ne yazık ki "Mesh.vertices çok küçük. Sağlanan köşe dizisi, üçgen dizisi tarafından başvurulandan daha az köşeye sahip."
RebDev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.