Unity3D中,如何把图像文件保存为数组并通过输入键盘信息调用?

Unity3D中,如何把图像文件保存为数组并通过输入键盘信息调用?,第1张

在unity工程的Assets目录下创建Resources目录,将图片按照一定的格式命名放在该目录下,比如说plane1的贴图名称为1_0001,1_0002等

然后写一个更新贴图的脚本

public class ChangeTex:MonoBehivour

{

private string m_id = ""

internal void OnGUI()

{

GUILayout.Label("ID")

m_id = GUILayout.TextField(m_id)

if (GUILayout.Button("Change"))

{

renderer.material.mainTexture = (Texture2D)Resources.Load(m_id)

}

}

}

将该脚本拖到plane1上面即可看到gui,输入对应的贴图名称,点击Change按钮就可以变化贴图了,当然,这个首先要保证这个plane已经有一个空白材质球,以上代码只是思路,不一定能够成功运行,请适当修改

在unity的sprite中贴图的方法如下:

在SpriteAnimator.cs脚本中添加代码

using UnityEngine

using System.Collections

/// Sprite 动画播放器

public class SpriteAnimator : MonoBehaviour {

/// Sprite渲染器

protected SpriteRenderer m_sprite

/// Sprite动画帧

protected Sprite[] m_clips

/// 动画计时器(默认每隔0.1秒更新一帧)

protected float timer = 0.1f

/// 贴图文件名前缀

public string m_sprite_name = "player00"

/// 贴图文件起始帧数字

public int m_start_frame = 0

/// 动画的帧数

public int m_frame_count =8

/// 跳帧数量

public int m_offset_frame = 4

/// 当前的帧数

protected int m_frame = 0

}

SpriteRenderer是Sprite的渲染器,只有通过它才能在屏幕上显示出Sprite的图像。

m_clips是一个Sprite数组,用来保存动画所需要的Sprite。

在这个例子中,我们使用的动画贴图文件命名都采用数字后缀,表示动画帧,并且跳帧,如“player0016,player0020,player0024……”。m_start_frame表示第一帧的数字,在这个例子中是指16, m_offset_frame表示跳帧,在这个例子中是指4。出现跳帧数字是因为这些图像都是通过3D软件渲染而成,在渲染的时候进行了跳帧设置,否则这个动画需要几十张图片来表现。

void Start () {

// 初始化动画帧数组

m_clips = new Sprite[m_frame_count]

for (int i = 0i <m_frame_counti++)

{

// 当前帧

int currentframe = m_start_frame + i * m_offset_frame

// 计算贴图名称

string spritename = string.Format(m_sprite_name + "{0:D2}", currentframe)

// 从Resources目录读取贴图

Texture2D texture = (Texture2D)Resources.Load(spritename)

// 由贴图创建出Sprite

m_clips[i] = Sprite.Create(texture,

new Rect(0, 0, texture.width, texture.height),

new Vector2(0.5f, 0.2f))

}

// 为当前GameObject添加一个Sprite渲染器

m_sprite = this.gameObject.AddComponent<SpriteRenderer>()

// 设置第1帧的Sprite

m_sprite.sprite = m_clips[m_frame]

}

1.创建Unity3d工程,新建C#脚本,名称自拟。

2.双击脚本,添加数组变量public Object[] shapes = null

3.返回场景,将数组长度设置成3。

4.新建三个球体,将球体错开位置,依次拖拽到对象数组变量中进行赋值。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11904621.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存