赞
踩
ChatGPT最近非常的火,我们今天作为一个Unity程序员,来看看使用ChatGPT给我们写代码会带来什么样的一个变化。如何使用ChatGPT来帮我们写代码。
题目: 编写代码,实现Unity 渲染文字到3D模型表面。
今天我们来完全使用ChatGPT来辅助我们实现这样一个功能。打开ChatGPT,把题目发给它,看它给的回复:
我把ChatGPT的代码与回复复制出来,
using UnityEngine;
using System.Collections;
using TMPro;
public class RenderTextOnModel : MonoBehaviour {
public TextMeshPro textMesh; // TextMeshPro组件
public GameObject model; // 3D模型对象
private Material modelMaterial; // 模型材质
private Texture2D textTexture; // 文字纹理
void Start () {
// 获取模型材质
modelMaterial = model.GetComponent<Renderer>().material;
// 创建文字纹理
textTexture = new Texture2D(512, 512, TextureFormat.ARGB32, false);
textTexture.filterMode = FilterMode.Trilinear;
textTexture.wrapMode = TextureWrapMode.Clamp;
// 设置文字纹理的像素值
Color32[] pixels = textMesh.textInfo.meshInfo[0].colors32;
textTexture.SetPixels32(pixels);
textTexture.Apply();
// 将文字纹理应用到模型材质上
modelMaterial.mainTexture = textTexture;
}
}
以上代码中,首先获取了模型材质和TextMeshPro组件,然后创建了一个512x512的文字纹理,并将TextMeshPro组件中的文字像素值赋值给纹理。最后,将纹理应用到模型材质上,实现将文字渲染到3D模型表面的效果。
需要注意的是,以上代码只是示例代码,实际应用中需要根据具体情况进行修改和调整,例如调整纹理的大小、设置纹理的UV映射方式等。另外,为了获得更好的渲染效果,可以使用Shader Graph等工具来自定义材质效果。
我们来看下他给的代码与思路,其实还是非常正确的:
Step1: 创建一个纹理对象;
Step2: 使用TextMeshPro组件将文字渲染到纹理对象上;
Step3: 将纹理对象替换材质球中的纹理对象;
接下来有了思路以后,我们就来重建这个思路,验证他的正确性。
先创建一个项目,放一个3D的平面,然后给这个节点添加一个TextMeshPro组件实例
截图如下:
接下来我们要把Hello贴到GameObject上,我们新建一个代码文件RenderTextOnModel.cs,把ChatGPT的代码复制过去, 把脚本添加到Quad节点模型上,关联好参数,如图:
报错(哈哈),来修正一下结果。经过打印,我们发现第26行报错,原因是因为返回的pixels为null对象,所以导致26行报错。
Color32[] pixels = textMesh.textInfo.meshInfo[0].colors32; // pixels为null
接下来我们又来问ChartGPT: “为什么TextMeshPro.textInfo.meshInfo[0].colors32, 为什么会为null”,看看他的回答:
我们对逐一的情况进行了排查,发现chatgpt列举的情况,都是对的,meshinfo[0]也不为null, 好吧我们换一种问法。
问: “TextMeshPro 如何获取文字的纹理”, 看看chatGPT如何回答
我们复制一下 代码过去,然后放项目中调试,发现有语法错误:
TextureMapping找不到,我们接着问ChatGPT: “Unity 找不到 TextureMapping是怎么回事?”
我们判断可能没有名字空间,接下来再问ChatGPT, “TextureMapping在哪个名字空间?”
我们加上名字空间,还是报错找不到TextureMapping,我们怀疑是不是版本的问题,接下来问ChatGPT, unity 2020 是否有TextureMapping, 如何没有,用什么替代?
告诉我们类被移除。
接下来我们回答上面换个问法: “unity 2020 TextMeshPro 如何获取文字的纹理?”
又提示我让我还对象来获取,这里我就不再给大家去接着往下讲了。从刚才的回答我们总结如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。