2017-01-09 81 views
2

rawImageテクスチャのピクセル色をどのように取得できるか知りたい。 Unity 2D:Raw画像の色のピクセルを取得する

この

は私のシーンです:

enter image description here

public class ColorPicker : MonoBehaviour, IPointerClickHandler 
{ 
    public GameObject Cube; 

    public void OnPointerClick(PointerEventData eventData) 
    { 
     if (Input.GetMouseButtonUp(1)) 
     { 
      Vector3 localPosition = transform.InverseTransformPoint(eventData.pressPosition); 

      Color color = (GetComponent<RawImage>().texture as Texture2D).GetPixel(Convert.ToInt32(localPosition.x), 
       Convert.ToInt32(localPosition.y)); 
      Cube.GetComponent<Renderer>().material.color = color; 
     } 
    } 
} 

そして、あなたが見ることができるように、このコードで、それは動作しますが、それはscalledされていません。

実際、私は青色に達することができません。私は私の四角形の頂上を得ることができます。

右クリックをしたときに色を取得する方法を教えてください。あなたは

Input.mousePosition 

を使用して取得

おかげで

+2

なぜあなたは 'OnGUI()'を使用していますか? –

+0

@ m.rogalskiによって指摘されているように、この動作には 'Update'を使用するべきです。ここではGUI上で作業をしていないので、' OnGUI'は推奨しません。 – Rob

答えて

1

マウスの位置(あなたが得る位置が画面のサイズに相対的であるという意味)の画面空間です。

キャンバススペース内のマウスの位置(キャンバスのサイズに関係なく、キャンバスのサイズを気にする必要はありません)を取得します。

これは、ColorPickerスクリプトでIPointerClickHandlerを実装することで可能です(これは、Input.mousePositionを使用するよりも優れています)。

using UnityEngine.EventSystems;  

    public class ColorPicker : MonoBehaviour, IPointerClickHandler{ 

    public GameObject Cube; 

    void OnPointerClick(PointerEventData eventData) 
    { 
    //eventData.position 
    //Vector3 localPosition = transform.InverseTransformPoint(eventData.pressPosition); 
    //ignore z coordinate 
    } 
} 

PointerEventDataは、多くの有用な情報が含まれている、あなたはUnityのドキュメントにhttps://docs.unity3d.com/ScriptReference/EventSystems.PointerEventData.html

をより多くの情報を得ることができますあなたはおそらくまだ私が持っているよう

transform.InverseTransformPoint(eventData.pressPosition); 

を使用して、マウスの位置を変換する必要がありますこれはまだテストされていません。しかし、私はこれが正しい方向にあなたを指し示すことを願っています!

+0

お返事ありがとうございます。しかし、私は同じ問題を抱えています。それは私のYがうまくいかなかったかのようです。元の投稿を編集しました。 – Naografix

+0

解決されていません。助けが必要。 – Naografix

関連する問題