L. *_*tal 6 c# user-interface unity-game-engine visual-studio guitexture
我目前遇到了C#中更新编码的问题.我正在制作一本教科书"3.x Game Development Essentials",目前正在尝试制作一个阵列,该阵列将分配纹理,这将显示电池充电的进度.教科书要我创建一个GUITexture,但是这在之前的Unity更新中已经过时了,所以我创建了一个创建Canvas和子游戏对象的UI Image.虽然这解决了屏幕上的问题,但编码时情况更糟.这本书要我创建一个由五个纹理组成的数组(四种状态,加上原始的空纹理).目标是每当角色拿起一个电池时,它会在UI Canvas中反映出来.现在,这是我得到goobery的地方:
这是本书指定在我的Inventory脚本上实现的原始编码:
public Texture2D [] hudCharge;
public GUITexture charge HudGUI;
Run Code Online (Sandbox Code Playgroud)
我最终不得不松鼠去处理旧代码,并尝试了这个:
using UnityEngine.UI;
public class Inventory : MonoBehaviour{
public static int charge = 0
public UnityEngine.AudioClip collectSound;
public UnityEngine.Texture2D[] hudCharge;
public Image chargeHudGUI;
Run Code Online (Sandbox Code Playgroud)
现在我们变得更奇怪了.因为本书使用的是过时的代码,所以它要我使用电荷值从数组中选择一个纹理.因此,它要我输入:
chargeHudGUI.texture = hudCharge[charge];
Run Code Online (Sandbox Code Playgroud)
目标是我们正在解决分配给chargeHudGUI变量的GUITexture对象,特别是它的纹理属性.嗯,这很时髦但是再也没有GUITexture了,那么它离我而去的地方呢?它让我这样:
chargeHudGUI.Image = hudCharge[charge].
Run Code Online (Sandbox Code Playgroud)
我一直在浏览每个线程,我可以尝试找出该做什么,但似乎没有解决这个特殊问题.有没有人有任何指导导航这个废话?我已经在这个游戏上工作了一段时间,我决心完成它.我想学习如何使用Visual Studio和Unity3D.我感谢任何帮助!
GUITexture确实像GUIText一样被弃用。由于您的变量是 的类型,因此将其设为类型而不是,以便您可以直接使用纹理属性对其进行分配。hudChargeTexture2DchargeHudGUIRawImageImage
转到 GameObject ---> UI ---> RawImage 和 Unity 将创建一个带有 GameObject 作为子元素的 Canvas。该子 GameObject 将有一个RawImage组件。您可以在此处了解有关新 UI 系统的更多信息。
所以,更换
public Image chargeHudGUI;
Run Code Online (Sandbox Code Playgroud)
和
public RawImage chargeHudGUI;
Run Code Online (Sandbox Code Playgroud)
现在,您可以这样做:
chargeHudGUI.texture = hudCharge[charge];
Run Code Online (Sandbox Code Playgroud)
您仍然可以使用Image,而不是RawImage,但你必须转换Texture2D到Sprite每个时间或缓存然后将它们改变Image.sprite属性来显示它们。
public Image chargeHudGUI;
Run Code Online (Sandbox Code Playgroud)
那么你可以这样做:
Texture2D tex = hudCharge[charge];
//Create Sprite from the Texture2D
Sprite tempSprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f);
//Change the Sprite
chargeHudGUI.sprite = tempSprite;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |