当前位置:   article > 正文

实测Unity程序员面向ChatGPT编程是个什么样的体验_chartgpt 给一个软件工程

chartgpt 给一个软件工程

 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对我们开发者的要求一点都没有减少,提升效率的同时,还是需要自身过硬。
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号