Unity使用豆包视觉模型
使用日期:2026.3.23引擎:Unity2021.3.45。
·
环境
使用日期:2026.3.23
OS:Windows10
引擎:Unity2021.3.45
接口文档
https://www.volcengine.com/docs/82379/1541523?lang=zh
示例-提示词生成图片
数据类
[System.Serializable]
public class RequestImage
{
public string model;
public string prompt;
public List<string> image;
public string size;
public int seed;
public bool watermark;
public string output_format = "jpeg";
public string response_format = "b64_json";
}
[System.Serializable]
public class ResponeImage
{
public string model;
public int integer;
public List<ImageResult> data;
public ImageError error;
}
[System.Serializable]
public class ImageResult
{
public string url;
public string b64_json;
public string size;
}
[System.Serializable]
public class ImageError
{
public string code;
public string message;
}
请求并显示响应图片
必须参数:
api:https://ark.cn-beijing.volces.com/api/v3/images/generations
apikey:创建的key
model:doubao-seedream-5-0-260128
使用体验:生成速度较慢。
示例:
提示词:可爱小猫咪。
大概需要三十多秒。
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;
public class DoubaoImageApi : MonoBehaviour
{
[SerializeField] string api;
[SerializeField] string apiKey;
[Header("模型")]
[SerializeField] string model;
[Header("提示词")]
[SerializeField] string textToImagePrompt;
[Header("保存图片")]
[SerializeField] bool save;
List<Texture2D> textures = new List<Texture2D>();
bool requesting;
float time = 0;
void Awake()
{
requesting = true;
time = 0;
RequestImage requestImage = new RequestImage()
{
model = model,
prompt = textToImagePrompt,
size = "2K",
seed = 1024,
watermark = false,
};
var content = JsonUtility.ToJson(requestImage);
Debug.Log(content);
StartCoroutine(PostImage(api, content, (sucess, value) =>
{
requesting = false;
Debug.Log((sucess, value));
if (sucess)
{
var responeImage = JsonUtility.FromJson<ResponeImage>(value);
if (responeImage != null && responeImage.data != null)
{
foreach (var item in responeImage.data)
{
var data = Convert.FromBase64String(item.b64_json);
if (save)
File.WriteAllBytes(Guid.NewGuid() + ".jpeg", data);
var texture = new Texture2D(1, 1);
texture.LoadImage(data);
texture.Apply();
textures.Add(texture);
}
}
}
}));
}
Vector2 move;
void OnGUI()
{
if (requesting)
{
time += Time.deltaTime;
GUILayout.Label("生成图片中:" + time);
}
GUILayout.Label("生成图片:");
if (textures.Count > 0)
{
move = GUILayout.BeginScrollView(move);
foreach (var item in textures)
{
GUILayout.Label(item);
}
GUILayout.EndScrollView();
}
}
IEnumerator PostImage(string url, string jsonData, Action<bool, string> callback)
{
using (UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
{
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData);
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
request.SetRequestHeader("Authorization", "Bearer " + apiKey);
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success)
{
callback?.Invoke(true, request.downloadHandler.text);
}
else
{
Debug.LogError("请求失败:" + request.error);
callback?.Invoke(false, request.downloadHandler.text);
}
}
}
}
更多推荐



所有评论(0)