最近打算编写服务器,客户端用U3D,后端语言打算用C# ,本文为后端入门系列文章,记录一下踩坑过程
创建C# WebApi 工程,
取消Https勾选
这样项目创建成功
项目目录结构
这是新建的项目结构,重点关注Controllers.当我们选择webAPI 创建项目的时候,它已经帮我们创建一个demo,我们直接运行看看
运行后,会自动打开Swagger,在里面可以看到,里面定义了一个WeatherForecast接口,执行一下,成功接口成功返回信息
创建自己的接口
在上面创建项目里,WeatherForecastController 就是定义接口的脚本
using Microsoft.AspNetCore.Mvc;
namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}
我们仿照这个脚本创建自己的接口,在Controllers文件夹下创建 MyTestController控制器,右键Controllers =》添加=》=》控制器
添加后名称修改MyTestController,然后对脚本作一下修改,如下
using Microsoft.AspNetCore.Mvc;
namespace MyWebApi.Controllers
{
[Route("api/[controller]/[Action]")]
[ApiController]
public class MyTestController : ControllerBase
{
[HttpGet]
public string TestHellWorld()
{
return "hell World!";
}
[HttpGet]
public string TestFunction_2(string name, string msg)
{
return $"{name}:{msg}";
}
}
}
[HttpGet] 特性 定义改接口是GET方法访问
[Route(“api/[controller]/[Action]”)] 特性,这里其实是定义路由地址,也就是API的访问地址
return 这里的就是返回改接口的数据
我们来运行一下项目
这里看见Swagger 已经能看见刚刚我们自己定义的接口TestHellWorld和TestFunction_2,然后我们用Swagger 请求一下接口,看看数据返回
数据返回 hell World! 没问题
创建U3D工程,请求接口
U3D 这边简单带过,创建一个空工程,简单挂一个请求接口代码运行就行了,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class TestGet : MonoBehaviour
{
const string url_1 = "http://localhost:5107/api/MyTest/TestHellWorld";
// Start is called before the first frame update
void Start()
{
StartCoroutine(RequestData_Get(url_1));
}
IEnumerator RequestData_Get(string url)
{
UnityWebRequest webRequest = UnityWebRequest.Get(url);
yield return webRequest.SendWebRequest();
if(webRequest.error != null)
{
Debug.Log(webRequest.error);
Debug.Log($"请求{url}接口出错");
}
else
{
string data = webRequest.downloadHandler.text;
Debug.Log(data);
}
}
}
请求接口的地址是在Swagger 上面有标识
运行U3D 之前,记得运行后端项目,不然U3D请求不了接口
接口数据打印出来,没问题,请求成功
部署到IIS服务器上
开启IIS服务
win+R =>输入control => 回车确认
按上图打勾,这里需要注意,点开 应用程序开发功能
这样配置,然后确认修改就行了。搜索IIS,打开
发布后端程序
回到VS编辑器,右键项目发布,发布完成之后会生成一个文件夹,我们把文件夹部署到iis上面
打开iis => 右键网站 => 添加网站
物理路径选择 刚刚发布后的文件路径,端口号自定义,我这里是8090
点击确认,部署就完成了
部署U3D
返回到Unity, 切换到webGl 平台,打包。
打包成功后,把文件夹部署到iis 上,具体请参考上面部署后端代码,流程一样.
至此,整个发布的流程就已经完成,下面打开U3D网站,就可以请求到接口数据了。
但是运行U3D之后,会发现报错和请求不了接口数据的情况,我会在下一篇文章中展示并解决。
链接: C# 后端入门(二)