Unity时间转换方式

简介: **时间戳与 DateTime 的转换简介**时间戳是从1970年1月1日00:00:00起的秒数,可转为 DateTime 对象。DateTime 转时间戳则是计算与1970年1月1日的时间差。秒数与时分秒格式互转基于60进制换算规则。Unity 中可通过 Time 类处理游戏时间,并与其他时间格式进行换算,需考虑时区等差异。示例代码展示了 Unity 中计时器的实现及总用时转换成时分秒的两种方法。

时间戳与 DateTime 的转换
时间戳转 DateTime
原理:时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒 (北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒) 起至现在的总秒数。在 Unity 中,可以通过将时间戳的值作为参数,创建一个 DateTime 对象。在底层,.NET 框架会根据时间戳的值计算出对应的年、月、日、时、分、秒等时间分量,从而构建出一个具体的日期时间对象。
DateTime 转时间戳
原理:获取 DateTime 对象所表示的时间与 1970 年 1 月 1 日 00:00:00 之间的时间间隔,然后将这个时间间隔转换为秒数或毫秒数,这个数值就是对应的时间戳。计算过程中,会考虑到闰年、每月的天数不同等历法规则,精确计算出两个时间点之间的时间差。
秒数与时分秒格式的转换
秒数转时分秒
原理:基于 60 进制的时间换算规则。首先将总秒数除以 3600,得到的商就是小时数;然后将总秒数对 3600 取余,得到剩余的秒数,再将这个余数除以 60,得到的商就是分钟数;最后将上一步的余数作为秒数。
时分秒转秒数
原理:将小时数乘以 3600,分钟数乘以 60,然后将这两个结果与秒数相加,就得到了对应的总秒数。
Unity 时间格式与其他时间格式的转换
原理:Unity 中有自己的时间表示和管理方式,如 Time 类用于处理游戏中的时间相关操作。要将 Unity 的时间格式与其他时间格式进行转换,通常需要根据各自的时间基准和单位进行换算。例如,将 Unity 的游戏时间(以秒为单位)转换为 DateTime 格式时,需要确定一个起始时间点,然后根据游戏时间的流逝计算出对应的 DateTime。在转换过程中,需要考虑到不同系统或平台的时间差异、时区设置等因素,以确保时间转换的准确性。
一、计时器的写法

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ShiJian : MonoBehaviour {
    public Text text;
    public Text text1;
    float SpendTime;
    int hour;int minute;int second;int milliScecond;
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        DateTime Time1 = DateTime.Now.ToLocalTime();
        text.text = Time1.ToString("yyyy-MM-dd HH:mm:ss");

        SpendTime += Time.deltaTime;
        hour = (int)SpendTime / 3600;
        minute = (int)(SpendTime - hour * 3600 )/60;
        second = (int)(SpendTime - hour * 3600 - minute * 60);
        milliScecond = (int)((SpendTime - (int)SpendTime) * 1000);
        text1.text = string.Format("{0:D2}:{1:D2}:{2:D2}:{3:D3}",
            hour, minute, second,milliScecond);
    }
}

二、第二种转换方式-总用时转换成时分秒(两种方式)

if (aa)
        {
            Shi = Convert.ToInt32(field.text) / 3600;           
            Fen = Convert.ToInt32(field.text) % 3600 / 60;
            miao = Convert.ToInt32(field.text) % 60;
            text.text = Shi + ":" + (int)Fen + ":" + miao;

        }
        if (aa )
        {
            Shi = (int)Convert.ToInt32(field.text) / 3600;
            Fen = (int)(Convert.ToInt32(field.text) - Shi * 3600) / 60;
            miao = (int)(Convert.ToInt32(field.text) - Shi * 3600 - Fen * 60);
            text.text = Shi + ":" + (int)Fen + ":" + miao;
        }
相关文章
|
9月前
|
图形学
Unity 使用VideoPlayer播放视频,实现播放,暂停,快进的效果
该UI搭建流程包括创建Render Texture和RawImage,添加Video Player组件并设置Target Texture与Video Clip。通过Event Trigger组件为滑动条添加拖拽事件,控制视频播放进度。代码实现中,`ShuiWenZhiShiButton`类管理视频播放、暂停、进度条更新及时间显示功能,并通过按钮切换不同视频。测试时可验证各功能是否正常运作。
|
9月前
|
图形学
unity判断鼠标在不在UI上
在 Unity 中,判断鼠标是否在 UI 上主要依赖事件系统和射线检测机制。Unity 的事件系统负责处理输入事件,GraphicRaycaster 组件用于检测射线与 UI 元素的相交情况。通过 `EventSystem.current.IsPointerOverGameObject()` 方法可轻松判断鼠标是否在 UI 上。对于移动端,使用 `EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)` 来判断触摸是否在 UI 上。代码实现简单且高效。
|
9月前
|
存储 图形学 索引
unity 使物体跟随路径点自动移动位置
在Unity中,物体沿路径点自动移动的核心原理是通过预设路径点,控制物体依次移动。路径点可用空对象或三维向量数组定义,并按顺序存储。移动时,计算当前位置与下一个路径点的向量差以确定方向,使用`Vector3.MoveTowards`逐步靠近目标点。代码实现包括路径点设置、移动控制及插值计算,确保物体平滑移动和旋转。
|
9月前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
1778 82
|
9月前
|
图形学
unity一个按钮实现开和关
在 Unity 中,通过一个布尔变量 `count` 来记录按钮的状态(开/关),并在点击事件中根据该变量的值执行不同操作。代码示例展示了两种方法:一种是通过计数器的奇偶性判断状态,另一种是直接取反布尔变量。每次点击后更新状态变量,从而实现按钮的开/关切换。
|
9月前
|
图形学 开发者
Unity Text字体颜色渐变
此代码实现文本颜色的垂直渐变效果。通过定义起始和结束颜色,获取像素位置信息(UV坐标),根据渐变方向计算颜色插值,并应用到每个像素上。具体步骤包括:1) 定义颜色范围;2) 获取UV坐标;3) 计算线性插值;4) 应用颜色。脚本挂载在Text组件上,可调节顶部和底部颜色实现渐变效果。
|
9月前
|
存储 算法 API
Unity打包AB包
在 Unity 中,AssetBundle(AB 包)用于存储和管理游戏资源,支持动态加载。开发者需为资源标记 AssetBundle 名称,Unity 会自动处理依赖关系并进行序列化。资源被打包成二进制格式,并可选择压缩算法(如 LZMA 或 LZ4)。通过 BuildPipeline API 可控制打包过程,包括设置目标平台(如 WebGL、PC)。示例代码展示了如何使用 BuildPipeline.BuildAssetBundles 方法打包 AB 包并输出到 StreamingAssets 文件夹中。
|
9月前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
9月前
|
图形学
unity中Rigidbody添加力的几种方式
本篇就是添加力的几种方式,记录一下