Je me permets de changer ton script en suivant les recommandations de cayou qui demande de ne plus utiliser les guiTextures.
viewtopic.php?f=9&t=3937&p=24591&hilit= ... ure#p24573
@Marc_s : le paramètre
guiDepth devrait te permettre de régler ton problème
-DESCRIPTION : affiche la texture passé en parametre aux coordonnées du curseur
-UTILISATION : Placer le script sur un gameObject.
- Texture2D texture : texture affichée.
bool centerTexture : cocher si le centre de la texture doit être sur le curseur / ne pas cocher si le coin supérieur gauche doit être sur le curseur.
bool showNatifCursor : cocher pour garder le curseur natif du système / ne pas cocher pour cacher le curseur natif du système.
int guiDepth : profondeur a laquelle la texture sera affiché. ( équivalent du z-index ).
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class GuiFollowMouse : MonoBehaviour {
public Texture2D texture;
public bool centerTexture, showNatifCursor;
public int guiDepth;
void Start ()
{
Screen.showCursor = this.showNatifCursor;
}
void OnGUI()
{
// change la profondeur d'affichage (z-index) de la texture
GUI.depth = this.guiDepth;
// recupere la position du curseur et inversse la coordonée Y
// Pour le rect 0,0 = Top-Left pour mousePosition 0-0 = bottom-left
Vector3 mouseScreenPosition = Input.mousePosition;
mouseScreenPosition.y = (mouseScreenPosition.y - Screen.height) * -1;
// centre la texture si c'est demandé
if (this.centerTexture)
{
mouseScreenPosition.x -= texture.width / 2;
mouseScreenPosition.y -= texture.height / 2;
}
// crée le rectangle d'affichage et affiche la texture a l'ecran.
Rect textureRect = new Rect(mouseScreenPosition.x, mouseScreenPosition.y, this.texture.width, this.texture.height);
GUI.DrawTexture(textureRect, this.texture);
}
}