添加 Steamworks 软件包

  1. 转到 https://github.com/rlabrecque/Steamworks.NET/releases 并下载最新版本,确保下载 .unitypackage。然后,您需要将其导入您的 Unity 项目。

  2. 在项目文件夹的根目录中打开 steam_appid.txt 文件并将 480 替换为您的 Steam AppId。重新启动 Unity。

  3. 在您的初始场景中,创建一个新游戏对象,将其命名为“Steam Manager”,并添加在 Scripts>Steamworks.NET 中找到的 SteamManager.cs 脚本

这就是将 Steamworks 集成到您的项目中所需的全部内容。只要确保 Steam 客户端在后台运行,您应该能够在编辑器中点击播放并且没有错误。

using UnityEngine;
using Steamworks;
using System.Collections.Generic; internal struct SteamWorkshopItem
{
public string ContentFolderPath;
public string Description;
public string PreviewImagePath;
public string[] Tags;
public string Title;
} public class SteamWorkshop : MonoBehaviour
{
private SteamWorkshopItem currentSteamWorkshopItem;
private PublishedFileId_t publishedFileID;
public static SteamWorkshop Instance { get; private set; } public List<string> GetListOfSubscribedItemsPaths()
{
var subscribedCount = SteamUGC.GetNumSubscribedItems();
PublishedFileId_t[] subscribedFiles = new PublishedFileId_t[subscribedCount];
SteamUGC.GetSubscribedItems(subscribedFiles, (uint)subscribedFiles.Length); ulong sizeOnDisk = 0;
string installLocation = string.Empty;
uint timeStamp = 0; var result = new List<string>(); foreach (var file in subscribedFiles)
{
SteamUGC.GetItemInstallInfo(file, out sizeOnDisk, out installLocation, 1024, out timeStamp);
result.Add(installLocation);
} return result;
} public void UploadContent(string itemTitle, string itemDescription, string contentFolderPath, string[] tags, string previewImagePath)
{
currentSteamWorkshopItem = new SteamWorkshopItem
{
Title = itemTitle,
Description = itemDescription,
ContentFolderPath = contentFolderPath,
Tags = tags,
PreviewImagePath = previewImagePath
}; CreateItem();
} private void Awake()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
} private void CreateItem()
{
var steamAPICall = SteamUGC.CreateItem(SteamUtils.GetAppID(), EWorkshopFileType.k_EWorkshopFileTypeCommunity);
var steamAPICallResult = CallResult<CreateItemResult_t>.Create();
steamAPICallResult.Set(steamAPICall, CreateItemResult);
} private void CreateItemResult(CreateItemResult_t param, bool bIOFailure)
{
if (param.m_eResult == EResult.k_EResultOK)
{
publishedFileID = param.m_nPublishedFileId;
UpdateItem();
}
else
{
Debug.Log("Couldn't create a new item");
}
} private void UpdateItem()
{
var updateHandle = SteamUGC.StartItemUpdate(SteamUtils.GetAppID(), publishedFileID); SteamUGC.SetItemTitle(updateHandle, currentSteamWorkshopItem.Title);
SteamUGC.SetItemDescription(updateHandle, currentSteamWorkshopItem.Description);
SteamUGC.SetItemContent(updateHandle, currentSteamWorkshopItem.ContentFolderPath);
SteamUGC.SetItemTags(updateHandle, currentSteamWorkshopItem.Tags);
SteamUGC.SetItemPreview(updateHandle, currentSteamWorkshopItem.PreviewImagePath);
SteamUGC.SetItemVisibility(updateHandle, ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityPublic); var steamAPICall = SteamUGC.SubmitItemUpdate(updateHandle, "");
var steamAPICallResult = CallResult<SubmitItemUpdateResult_t>.Create();
steamAPICallResult.Set(steamAPICall, UpdateItemResult);
} private void UpdateItemResult(SubmitItemUpdateResult_t param, bool bIOFailure)
{
if (param.m_eResult == EResult.k_EResultOK)
{
Debug.Log("Sucessfully submitted item to Steam");
}
else
{
Debug.Log("Couldn't submit the item to Steam");
}
}
}

转载自

https://www.salusgames.com/2019/01/27/simple-steam-workshop-implementation-in-unity3d/

Unity3D 中的简单 Steam 创意工坊实现的更多相关文章

  1. Unity3D中简单的C#异步Socket实现

    Unity3D中简单的C#异步Socket实现 简单的异步Socket实现..net框架自身提供了很完善的Socket底层.笔者在做Unity3D小东西的时候需要使用到Socket网络通信.于是决定自 ...

  2. 虚拟现实外包公司—焰火工坊CTO团队外包难把VR真正做起来,讲故事可能将伤害产业链

    CTO王明杨,带着他的焰火工坊,正在为自家VR播放器和系统的上线做最后准备.不少投资机构,有传言称包括小米在内巨头都试图染指VR领域,而上月上市的暴风影音正是倚靠VR的概念成功助推了其高股价.对此,王 ...

  3. 【Unity3d游戏开发】Unity3D中的3D数学基础---向量

    向量是2D.3D数学研究的标准工具,在3D游戏中向量是基础.因此掌握好向量的一些基本概念以及属性和常用运算方法就显得尤为重要.在本篇博客中,马三就来和大家一起回顾和学习一下Unity3D中那些常用的3 ...

  4. 图文详解Unity3D中Material的Tiling和Offset是怎么回事

    图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔 ...

  5. Unity3D中灵活绘制进度条

    有时我们需要在Unity3D中绘制进度条,如:           或        如果使用4.6版本以下的unity绘制环形的进度条可能需要费点劲.我搜到的大多数方法都是用NGUI插件,但有时只是 ...

  6. 【吐血推荐】简要分析unity3d中剪不断理还乱的yield

    在学习unity3d的时候很容易看到下面这个例子: void Start () { StartCoroutine(Destroy()); } IEnumerator Destroy(){ yield ...

  7. Unity3D中事件函数的运行顺序

    Unity3D中脚本的生命周期是依照预先定义好的事件函数的运行流程来演化的,详细流程例如以下: Editor模式下Reset: 当脚本第一次被挂到GameObject上或用户点击Resetbutton ...

  8. 在unity3d中连接sql server

    虽然在Unity3D中能够通过PlayerPrefs类来保存和读取数据,但是一旦数据量增大,仅仅通过代码的方式存取数据,这样的工作量是非常大的.那么如何通过使用Sql Server数据库来存取数据呢? ...

  9. (转) [教程] Unity3D中角色的动画脚本的编写(一)

    ps: 这两天研究unity3d,对动画处理特别迷糊,不知FBX导入以后,接下来应该怎么操作,看到这篇文章,感觉非常好,讲解的很详细. 已有好些天没写什么了,今天想起来该写点东西了.这次我所介绍的内容 ...

  10. Unity3d中如何混用三种脚本语言?

    首先要明白,这三种说的混用是指文件级别的混用,就是说一个文件是由一种语言写的.而不是说你这一个文件可以混用这三种语言,注意这是不允许的. 第二要明白,在unity3d中为什么可以使用三种语言混合开发? ...

随机推荐

  1. LangChain4j比SpringAI强在哪?一文读懂

    LangChain4j 和 Spring AI 是 Java 生态中实现大模型应用开发的两个最重要的框架,但二者的区别是啥?生产级别又该使用哪种框架?令很多人犯了难,所以本文就来浅聊一下,希望给大家在 ...

  2. Pandas 批量处理文本表

    就是一个批量读取文件, 然后计算指标的过程. 难度到是没啥, 只是想记录一把, 毕竟这类的需求, 其实还是蛮多的. 但涉及一些数据的安全, 和指标这块也是不能透露的, 因此只能是贴上代码, 目的还是给 ...

  3. C#反射报错之System.Reflection.AmbiguousMatchException:“Ambiguous match found.

    .NET6 Type t = typeof(double).GetMethod("TryParse").GetParameters()[1].ParameterType; Cons ...

  4. Svelte 5 在跨平台 AI 阅读助手中的实践:轻量化前端架构的极致性能优化

    一.引言:为什么选择 Svelte 5 来构建 Saga Reader 的前端? 作为一个典型的前端开发者,去年在为公司调研Rust前端工具链.LLM应用开发技术体系的时候,对这类技术领域产生了浓厚的 ...

  5. bigdecimal去除末尾多余的0 ,stripTrailingZeros()科学计数法解决

    BigDecimal是处理高精度的浮点数运算的常用的一个类 当需要将BigDecimal中保存的浮点数值打印出来,特别是在页面上显示的时候,就有可能遇到预想之外的科学技术法表示的问题. 一般直接使用 ...

  6. Redis五-哨兵

    目录 哨兵 导读 基本概念 主从复制问题 Redis Sentinel的高可用性 安装和部署 部署数据节点 部署Sentinel节点 Seninel配置优化 sentinel API 实现原理 三个定 ...

  7. RT-Thread 4.0.3 适配 UART_V2 版本

    RT-Thread 4.0.3 适配 UART_V2 版本 本文为针对发布版4.0.3 进行 UART_V2 驱动的移植适配操作笔记. 由于使用了 libmodbus 软件包,需要 posix_ter ...

  8. DotTrace系列:1. 理解四大经典的诊断类型(上)

    一:背景 1. 讲故事 在所有与 .NET相关的JetBrains产品中,我觉得 DotTrace 是最值得深入学习和研究的一款,个人觉得它的优点如下: 跨平台诊断 (Windows,Linux,Ma ...

  9. QQ号码价值评估系统html代码-丢塔网

    由于前面刷视频经常刷到有人直播QQ号码价值评估,想着也搞一个玩玩,找了一圈接口好像很多都用不来,下面提供一个自己随便搞得页面,有兴趣的大佬可以完善下 ` QQ号码价值评估系统-在线工具-丢塔网(www ...

  10. CPU的几核几线程是什么意思?

    前言 经常看到 电脑硬件的配置参数上 是这么标注cpu的 是不是不太明白 是什么意思? 命名 每个cpu型号都有自己名字,比如上边举例的那款叫做 i5-12600k i5指得是 英特尔公司把自家cpu ...