实测Unity程序员面向ChatGPT编程是个什么样的体验

  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 如何获取文字的纹理?”

又提示我让我还对象来获取,这里我就不再给大家去接着往下讲了。从刚才的回答我们总结如下:

  1. ChatGPT确实是一个非常好的工具,给出的思路方向都很有指导性;
  2. ChatGPT 目前还不能处理好代码工具的版本差异导致的问题;
  3. 使用好ChatGPT对我们开发者的要求一点都没有减少,提升效率的同时,还是需要自身过硬。
  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值