Unity/UIImage
提供: 初心者エンジニアの簡易メモ
幅修正
GameObject graph = GameObject.Find("/Canvas/Graph"); RectTransform textRect = graph.GetComponent<RectTransform>(); textRect.sizeDelta = new Vector2(1000.0f, 1000.0f);
幅と高さ
float width = gameObject.GetComponent<RectTransform>().sizeDelta.x; // 幅 float height = gameObject.GetComponent<RectTransform>().sizeDelta.y; // 高さ
UiImage複製して配置
- Canvas/CopySourceImageにコピー元Image設置
- NewImageが新しくできるImage
GameObject canvas = GameObject.Find("Canvas"); GameObject copySourceImage = GameObject.Find("Canvas/CopySourceImage"); GameObject newImage = new GameObject("NewImage"); newImage.transform.SetParent(canvas.transform, false); newImage.transform.SetSiblingIndex(copySourceImage.transform.GetSiblingIndex()); RectTransform baseTransform = copySourceImage.transform as RectTransform; RectTransform rectTransform = newImage.AddComponent<RectTransform>(); rectTransform.anchorMax = baseTransform.anchorMax; rectTransform.anchorMin = baseTransform.anchorMin; rectTransform.anchoredPosition = baseTransform.anchoredPosition; rectTransform.sizeDelta = baseTransform.sizeDelta; rectTransform.localScale = baseTransform.localScale; rectTransform.localPosition = baseTransform.localPosition; rectTransform.localRotation = baseTransform.localRotation; Image img = newImage.AddComponent<Image>(); img.sprite = copySourceImage.GetComponent<Image>().sprite;
参考:https://teratail.com/questions/42899
枠を追加
以下で外枠を追加できるが、Imageを透明にするとOutlineも消えてしまう・・。
Outline outline =imageObj.AddComponent<Outline>(); outline.effectColor = new Color(1, 0f, 0f, 1f);
どこか一辺だけの場合は、以下参照すればできるかも。http://aktaat.hatenablog.com/entry/2016/10/30/085534
using UnityEngine; using System.Collections.Generic; public class WakuImage : MonoBehaviour { private RectTransform rect; private Vector2 TopRight; private Vector2 TopLeft; private Vector2 BottomLeft; private Vector2 BottomRight; void Start() { //自分自身がアタッチしたGameObjectのコンポーネントを取得する場合はgameObject //自分がアタッチしているかわからないシーン内のゲームオブジェクトを探して //キャッシュするにはGameObject.Find("ゲームオブジェクトの名前") rect = gameObject.GetComponent<RectTransform>(); var offsetMax = rect.offsetMax;//アンカーからのオフセット(右上) var offsetMin = rect.offsetMin;//アンカーからのオフセット(左下) //アンカーがCanvasの四隅を指定している場合 TopRight = new Vector2(Screen.width + offsetMax.x, Screen.height + offsetMax.y); TopLeft = new Vector2(offsetMin.x, Screen.height + offsetMax.y); BottomLeft = new Vector2(offsetMin.x, offsetMin.y); BottomRight = new Vector2(Screen.width + offsetMax.x, offsetMin.y); LineRenderer renderer = this.GetComponent<LineRenderer>(); renderer.SetWidth(0.01f, 0.01f); // 幅 renderer.SetVertexCount(4); // x点間 renderer.SetPosition(0, new Vector3(Screen.width + offsetMax.x, Screen.height + offsetMax.y, 0)); renderer.SetPosition(1, new Vector3(offsetMin.x, Screen.height + offsetMax.y, 0)); renderer.SetPosition(2, new Vector3(offsetMin.x, Screen.height + offsetMax.y, 0)); renderer.SetPosition(3, new Vector3(Screen.width + offsetMax.x, offsetMin.y, 0)); // renderer.SetPosition(1, new Vector3(-10f, -10f, 0f)); // 0から右上へ } }