2017-01-19 3 views
1

Я только начал использовать Unity, и я не знаю, как правильно отлаживать скрипты во время работы в моем дизайнере кода VS.Проблемы с String.Format и TimeSpan

У меня есть этот код в сценарий, который обыкновение давать мне формат я хочу:

private string GetTimeElapsedAsString() 
{ 
    TimeSpan timeElapsed = DateTime.Now.Subtract(_startTime); 
    return string.Format("{0:mm} {1:ss} {2:ff}", timeElapsed.TotalMinutes, timeElapsed.TotalSeconds, timeElapsed.TotalMilliseconds); 
} 

Что я хочу что-то вроде этого: «00:07:32» в данном формате: «мм: ss: ff "

Я просто хочу, чтобы самый простой способ отрезать все, кроме 2 цифр каждого блока времени. Любые идеи?

С уважением, Кальрин.

EDIT (прогрессивное разверление): Я изменил код. Теперь это выглядит следующим образом:

private string GetTimeElapsedAsString() 
{ 
    TimeSpan timeElapsed = DateTime.Now.Subtract(_startTime); 
    return string.Format("{0:00}:{1:00}:{2:00}", timeElapsed.Minutes, timeElapsed.Seconds, timeElapsed.Milliseconds); 
} 

Тем не менее, когда я иду, чтобы проверить мою игру я получаю 3 цифры, отображающие миллисекунды - Почему это происходит ??

выглядит так: UI Text component in Unity

EDIT: Я нашел решение моей последнего вопроса:

return string.Format("{0:00}:{1:00}:{2}", timeElapsed.Minutes, timeElapsed.Seconds, timeElapsed.Milliseconds.ToString().Substring(0,2)); 

Все, что мне нужно было создать .substring (0,2), содержащий только 2 первых цифры целого числа.

Thx для тех, кто пытался помочь! выглядит красиво !!:

Working Example

Ура!

ответ

4

Вы передаете три номера Format().

Номера не распознают `` m , s , or f`, поэтому они просто печатают буквальные символы.

Вы хотите, чтобы строка формата 00 помещала каждое число в две цифры.

Кроме того, вы действительно не хотите .Total*; см. документацию.

+0

Спасибо это работает! :) Можете ли вы сказать мне, что есть лучший способ сделать это? Кроме того, есть ли что-нибудь, что я могу сделать в IFormatProvider для включения «:» между каждой единицей? – Kalrin

+0

Вы можете поместить ':' s в строку. – SLaks

+0

Спасибо! - Не могли бы вы взглянуть на мое редактирование в сообщении? - Кажется, я получаю 3 цифры в последнем формате (миллисекунды). – Kalrin

2

Я предлагаю вам попробовать

ts.ToString("mm:ss:ff"); 
+0

Unity может не поддерживать это; он был добавлен к довольно недавней версии фреймворка. – SLaks

+0

Я пробовал: return (timeElapsed.Minutes + timeElapsed.Seconds + timeElapsed.Milliseconds) .ToString ("mm: ss: ff"); - Не работает. Ничего не передается компоненту Текст. – Kalrin

+1

@Kalrin: Эта строка формата применяется к 'TimeSpan', а не номерам. – SLaks

Смежные вопросы