Şimdi Ara

Unity shader property erişimi yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
297
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Unity shader property erişimi yardım

    Resimdeki Shaderda Surface Inputs altında Offset kısmına erişip Update içerisinde belli aralıklarla bu değeri değiştirmek istiyorum. Bunu nasıl yapabilirim acaba ? İnternetten baktım ancak bulduğum gösterimler çalışmadı. Büyük ihtimalle yeni versiyonda işler değişmiş gibi. Teşekkürler.







  • Önce shadder dosyasına çift tıklayıp açılan kodlarda properties değişkenlerini görmek gerekiyor.Bu yüklediğiniz resimde sağ üstteki ayarlar simgesine tıklayıp edit shaderi seçin ve bu yazdığım scipte göre değiştirmek istediğiniz değişkeni girin.Ben kendi elimdeki bir shadere yazdığım şekli anlatıyorum.
    Elimizde bir A isminde shader dosyası birde A isminde materyal var ama materialin shaderi hangi shadere ulaşacaksak o seçili olmalı tabiki yani A isimli shader.

    Bendeki shaderin kodlarını açtığımda properties şu şekilde;

    Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _BumpAmt ("Distortion", Range (0,128)) = 10
    _MainTex ("Tint Color (RGB)", 2D) = "white" {}
    _BumpMap ("Normalmap", 2D) = "bump" {}
    _Size ("Size", Range(0, 20)) = 1
    }

    Buna göre bu scriptte tintcolor offset x değerini 10 yapıyorum.Eğer offset y değerini değiştirmek istiyorsak
    ShaderMaterial.SetTextureOffset("_MainTex", new Vector2(0,ShaderValue));




    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class ShaderChange : MonoBehaviour {

    float ShaderValue=10;
    public Material ShaderMaterial;

    void Start () {
    }

    void Update () {

    ShaderMaterial.SetTextureOffset("_MainTex", new Vector2(ShaderValue,0));


    }
    }


    Bu şekilde oyun başlar başlamaz 10 olacaktır siz hangi şartta 10 olacaksa ona göre yaparsınız.

    if(?????????){
    ShaderValue=10;
    }
    else{
    ShaderValue=0;
    }




  • quote:

    Orijinalden alıntı: Bir internet kullanıcısı

    Önce shadder dosyasına çift tıklayıp açılan kodlarda properties değişkenlerini görmek gerekiyor.Bu yüklediğiniz resimde sağ üstteki ayarlar simgesine tıklayıp edit shaderi seçin ve bu yazdığım scipte göre değiştirmek istediğiniz değişkeni girin.Ben kendi elimdeki bir shadere yazdığım şekli anlatıyorum.
    Elimizde bir A isminde shader dosyası birde A isminde materyal var ama materialin shaderi hangi shadere ulaşacaksak o seçili olmalı tabiki yani A isimli shader.

    Bendeki shaderin kodlarını açtığımda properties şu şekilde;

    Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _BumpAmt ("Distortion", Range (0,128)) = 10
    _MainTex ("Tint Color (RGB)", 2D) = "white" {}
    _BumpMap ("Normalmap", 2D) = "bump" {}
    _Size ("Size", Range(0, 20)) = 1
    }

    Buna göre bu scriptte tintcolor offset x değerini 10 yapıyorum.Eğer offset y değerini değiştirmek istiyorsak
    ShaderMaterial.SetTextureOffset("_MainTex", new Vector2(0,ShaderValue));




    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class ShaderChange : MonoBehaviour {

    float ShaderValue=10;
    public Material ShaderMaterial;

    void Start () {
    }

    void Update () {

    ShaderMaterial.SetTextureOffset("_MainTex", new Vector2(ShaderValue,0));


    }
    }


    Bu şekilde oyun başlar başlamaz 10 olacaktır siz hangi şartta 10 olacaksa ona göre yaparsınız.

    if(?????????){
    ShaderValue=10;
    }
    else{
    ShaderValue=0;
    }
    Teşekkürler hocam ama edit shader dediğim zaman aşağıdaki kısma yönlendiriyor. Bu arada shaderı kendim oluşturmadım Unity'nin builtin shaderını kullanıyorum.

    Unity shader property erişimi yardım




  • kamisama- kullanıcısına yanıt
    Select shaderi tiklayin o zaman shaderi bulur ve cift tiklayip acarsiniz

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Veya o ekranda compile show code tıklarsanız yine görürsünüz.Kendinizin oluşturması veya unitynin dahili shaderi farketmez standart shaderide değiştiriyorum ben.
  • Bir internet kullanıcısı B kullanıcısına yanıt
    Properties
    {
    _BaseMap("Texture", 2D) = "white" {}
    _BaseColor("Color", Color) = (1, 1, 1, 1)
    _Cutoff("AlphaCutout", Range(0.0, 1.0)) = 0.5

    // BlendMode
    [HideInInspector] _Surface("__surface", Float) = 0.0
    [HideInInspector] _Blend("__blend", Float) = 0.0
    [HideInInspector] _AlphaClip("__clip", Float) = 0.0
    [HideInInspector] _SrcBlend("Src", Float) = 1.0
    [HideInInspector] _DstBlend("Dst", Float) = 0.0
    [HideInInspector] _ZWrite("ZWrite", Float) = 1.0
    [HideInInspector] _Cull("__cull", Float) = 2.0

    // Editmode props
    [HideInInspector] _QueueOffset("Queue offset", Float) = 0.0

    // ObsoleteProperties
    [HideInInspector] _MainTex("BaseMap", 2D) = "white" {}
    [HideInInspector] _Color("Base Color", Color) = (0.5, 0.5, 0.5, 1)
    [HideInInspector] _SampleGI("SampleGI", float) = 0.0 // needed from bakedlit
    }

    Properties kısmı bu şekilde şimdi offseti değiştirmek için ne yapmam lazım ?

    Tüm shader kodunu da atabilirim lazımsa.



    < Bu mesaj bu kişi tarafından değiştirildi kamisama- -- 29 Ocak 2020; 18:8:0 >




  • kamisama- kullanıcısına yanıt
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class ShaderChange : MonoBehaviour {

    float ShaderValue=10;
    public Material ShaderMaterial;

    void Start () {
    }

    void Update () {

    ShaderMaterial.SetTextureOffset("_BaseMap", new Vector2(ShaderValue,0));


    }
    }
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Bir internet kullanıcısı B kullanıcısına yanıt
    Çok teşekkür ederim.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.