admin管理员组

文章数量:1534211

2024年1月25日发(作者:)

Unity发布WebGL后,借助脚本自动处理元素替换

什么是Unity?

Unity是一种目前流行跨平台的游戏开发引擎,常用来制作3D和2D游戏、虚拟现实和增强现实应用程序。支持部署多种平台,包括Windows、Mac、iOS、Android和主流的游戏主机,其中就包括发布部署WebGL项目。

WebGL作为Unity游戏的发布的一种形式,方便实现跨平台兼容性、无需插件、强大的图形性能和Web集成性,提供更好的游戏体验,需要注意的是WebGL项目,尤其需要做好优化,否则会影响用户体验的。

替换统一的样式

在Unity发布WebGL后,将其上传到服务器进行展示或者在本地配置的服务器上展示,能看到统一的加载页面,界面上的元素都是统一指定的,对于追求个性化的展示,明显是不合需求的,这个时候,就需要配合UI,制作一套个性化的元素进行手动替换。

这种替换,对于次数不多,还是可以采用手动替换的;但发布过WebGL的朋友,就知道这明显是不可能的,先不说发布后调测的的次数,就发布来说,不可能仅几个这样的项目的,通常都是成批次的,这样就带来了,手动替换会很耗费时间的,关键会导致心情和效率走向一个不愿意看到的方向,所以就有了下面的脚本。

在脚本语言的选择上是很多的,或者说可以扩大一点,能完成此类工作的工具很多的。目前选择的是Python。

Python是什么,如果想了解的,请自行借助网络资源,可以深入的了解一下,否则有广告的嫌疑,这里就不在赘述了,请谅解。

参考脚本

下面是采用Python编写的脚本,您可以在此基础上,进行修改,使其和自己的项目适配的目的。

webgl_

#!D:UsersgjcAppDataLocalProgramsPythonPython39-32

# 处理unity webgl发布后的替换问题

import os

import shutil

project_name = 'ElectricLab'

def copyimg(old_name, new_name):

le(old_name, new_name)

def delFiles(cur_path):

fn = ['', '', '']

for item in fn:

path = cur_path + item

if (path):

(path)

def replaceStr(file, old_str, new_str):

"""

替换文件中的字符串

:param file:文件名

:param old_str:就字符串

:param new_str:新字符串

:return:

"""

file_data = ""

with open(file, "r", encoding="utf-8") as f:

for line in f:

if old_str in line:

line = e(old_str, new_str)

file_data += line

with open(file, "w", encoding="utf-8") as f:

(file_data)

def isAlreadyReplace(file, str):

with open(file, "r", encoding="utf-8") as f:

for line in f:

if str in line:

return True

return False

def dealwithIndexHtml(title):

# 处理index

index = local_filename + '/'

# 去掉右下角的图标

if isAlreadyReplace(index, ''):

return

old_str = r'

'

new_str = ''

replaceStr(index, old_str, new_str)

# 全屏

old_str = r'

' + project_name + '
'

new_str = '

全屏
'

replaceStr(index, old_str, new_str)

# 添加js文件

old_str = r''

new_str = 'nn'

replaceStr(index, old_str, new_str)

# 修改标题

old_str = r'Unity WebGL Player | ' + project_name + ''

new_str = '' + title + ''

replaceStr(index, old_str, new_str)

# local_filename = h('.') #从上一级目录调用的时候,这个取到的是上级目录,目录不对,下面的调用就白费了

local_filename = e(__file__) # 路径里面的有空格会报错的,这个要保证路径中没有空格

index = local_filename + '/'

# if isAlreadyReplace(index, ''):

# print(local_filename + '----已处理过,exit')

# exit()

print(local_filename + '----处理中')

filename = (local_filename)[1]

# 复制图片文件

copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/webgl_',

local_filename + '/Build/' + filename + '.jpg')

copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/',

local_filename + '/TemplateData/')

copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/',

local_filename + '/TemplateData/')

copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/',

local_filename + '/TemplateData/')

copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/',

local_filename + '/TemplateData/')

# 删除文件

delFiles(local_filename + '/TemplateData/')

# 处理

dealwithIndexHtml(filename)

脚本中已添加了相应的注释,比较好理解,不做过多的解释了,拿来用就好。实现自动办公可以提高工作效率、减少错误、节省成本,更加高效地运作,并更好的服务于自己。

关键是心情变好了,如果不看MN的话。

本文标签: 替换发布元素脚本自动