Search Unity

UnityScript を使った古いプロジェクトがお手元にありますか?もしそうであれば、UnityScript を C# に変換する Unity 製のオープンソースな変換ツールをぜひお試しください。こちらのリンクから今すぐダウンロードできます。

2017 年 8 月に発表した記事にある通り、私たちは JavaScript に似たスクリプト言語、UnityScript を廃止するプロセスを開始しました。そして、UnityScript から C# への変換ツールの開発に取り掛かりました。ほどなくして、新しく UnityScript を作成するメニューオプションは Legacy 配下に移されました。

この時以来、私たちは数多くのフィードバックを受け取り、変換ツールに潜んでいた無数の問題を解決してきました。いただいたフィードバックがきっかけとなって実現した変更もいくつかあります。たとえば、以下のような変更です。

  • オリジナルのスクリプトにあったコメントを維持する機能
  • 変換ツールをよりシンプルに使えるようにするエディター統合パッケージの提供
  • 多数の UnityScript 構造体について、サポートを強化

Unity 2018.2 で、新しい UnityScript スクリプトを作成するオプションを完全に削除しました。その時点までに、Unity としては変換ツールの要件となる機能が完全に実装され、また動作も十分に安定して、UnityScript を使ったプロジェクトをまだ手元にお持ちの方すべてにこの変換ツールをお使いいただいて問題ないと判断したためです。

変換プロセスを開始する前に、Unity 2018.1 でお手元のプロジェクトが正常にビルドできることと、テストがすべてパスすることを確認し、こちらのレポジトリにリストされている制約に目を通して、その内容を把握されておくことをお勧めします。.

変換ツールは Tools の Convert UnityScript to C# から実行されることをお勧めします。もし、変換中に使われるパラメーターをより細かく制御したい場合は、コマンドラインから変換を実行することもできます。ただし、柔軟性が増す代わりに複雑さも増すので、その点はご了承ください。

例として、下の動画で旧バージョンの『Angry Bots』プロジェクトの変換プロセスの概要を説明しています。この動画はあくまでデモ目的で作られたものであることにご注意ください。動画では Unity 2018.1 で最初にプロジェクトを開いたときにコンパイルエラーとなったコードをコメントアウトして対処していますが、実際のプロジェクトでは適切な修正を施す必要があります。

変換の基本的なプロセスは次のようにまとめられます。

  1. プロジェクトのバックアップを作る
  2. プロジェクトを Unity 2018.1 で開く
  3. API Updater が API を更新するかをたずねるダイアログを表示した場合は承諾して、残ったエラーを修正する
  4. 各ターゲットプラットフォームで、プレイヤーが正常にビルドできることを確認する
  5. 関連するすべてのテストがパスすることを確認する(加えて、実機でプロジェクトが実行できるかも確認する)
  6. 最新のエディター統合パッケージをインストールする(エディターでアセットパッケージをインストールする方法についてはこちらのマニュアルをご覧ください)
  7. エディターのコンソールをクリアする
  8. 変換ツールを実行する
  9. 残った問題を修正する(関連するテストを実行する)
変換対象のプロジェクトが複数のプラットフォームをターゲットにしている場合は、上記の手順 8 を各ターゲットプラットフォームをに対して繰り返す必要があります。このとき、変換ツールを実行する前にターゲットプラットフォームを切り替えてください。また、変換されたコードを手動でプラットフォーム別に条件分岐コードでラップしてください。これは変換ツールの持つ制約です。このような作業を行う必要がある場合は、変換を行うたびにプロジェクトの状態を復元できるよう、バージョン管理システム(VCS)を使うことも検討してください。

上記の手順 9 は実施する必要がない場合もあります。これはプロジェクトでどの API が使われているかによります。『Angry Bots』の例では、私たちは API が使われている部分をいくつか修正する必要がありました。

変換ツールはオープンソースですので、自由にソースをダウンロードして、内容をご覧いただくことができます。もちろん、修正や改善に貢献していただくことは大歓迎です。

何らかの理由でこの変換ツールが必要な要件を満たしていないと判断された場合は、アセットストアで他の変換ツールを探してみてください

最後に、こちらの変換ツールについて困ったことがある場合は、こちらのフォーラムスレッドまでお問い合わせください。可能な限り支援させていただきます。

12 コメント

コメントの配信登録

コメント受付を終了しました。

  1. Still using Angry Bots as an example in 2019? Wow, that’s amazing. That demo project is almost 10 years old. I built that sh*t to last I guess. Back then demo projects were developed in less than 2 months and had to align with a major release (Unity 3.5 if I remember correctly). We weren’t given even close to enough time to make these things. But somehow they’re still useful today (even if to show a deprecated modality of Unity).

  2. Very nice tool!

  3. You should make the same with Unet u.u and the new network system

  4. Thanks for the link . . .
    . . . What a right time to give a shout out to the site that helped me to convert many of my JS/UnityScripts : m2h.nl/files/js_to_c.php

  5. Thanks for the link . . .
    . . . What a right time to give a shout out to the site that helped me to convert many of my JS scripts : m2h.nl/files/js_to_c.php

  6. Isn’t this a revival of the message you wrote in 2017?
    How many do you think are interested in this and I don’t quite understand who’s controlling Blogs.
    I’ve been quietly reading blogs but it seems like they are all random and it provides very little values.

    I guess you don’t have any good posts worth sharing or just saving good ones for the next United keynotes??

    Seriously, I’m sorry but I don’t really care about unity sponsored random event or your employees. You can perhaps post them on your internal website. It seems like the most of the blog posts are just tidbits and you are posting it for the sake of updating pages once in a while and it has no or very little values.

    I think the only blog post that was worth reading it was, explaining the difference between LWRP, HDRP and Standard lighting models. It was a very good read and I learned a lot reading it and understood where Unity is going.
    It also made into the official documentation and I can easily find it and read it again when I want.
    It is really a good example of quality blogs and you can kill two birds with one stone by improving much-needed documentation updates at the same time.

    If someone landed on this blog page by accident, I bet they have no idea what business this company is in.

    I recommend you write more blog that are helpful for the developers. If you want to keep writing the blogs this way, please keep them separated to different pages at least so that I can filter them out.

    Well, more posts are better than no posts, but what I really want to see is posts that are worth reading, such as, new info, what everyone is waiting, some updates on the things that you promised, learning materials and so on.

    Thanks.

    1. Given that Unity 2018.3 was released recently and the support for unityscript was finally removed completely I would say the blog post may interest some people for sure regardless if its partly or fully a rehash of an older post.

    2. Community Team

      1月 8, 2019 6:58 pm

      Hi Chris!

      Thank you for your readership and feedback. We appreciate both!

      Yes, we made our announcement of the depreciation of UnityScript in our 2017 blog. The goal of today’s blog was to help any member of our community that needed this new tool to bring their UnityScript project into our most recent releases. While this might not apply to all projects, we wouldn’t want to leave anyone behind.

      We strive to execute blogs that are helpful to all of the corners of our community. We hear that you’re hoping for more blogs that are helpful for developers like yourself and will work toward that in 2019.

    3. Blogs are for community engagement, which happens to include, but is not exclusive to, the specific educational topics you enjoy.

      FWIW, those are my preferred topics as well, and I’d like it if they added a “tag” system as well as the top level category filters so I can easily find old content I may have missed or want to revisit.

    4. As a forum moderator I can assure you that this blog is very, very useful, today. I see posts from people asking for help on converting from Unity script on a weekly basis.

      A refresh or reminder could not be more timely, especially in light of the improvements made since. I recommend you put yourself in other people’s shoes, does that sound like a fair recommendation?

    5. Isaac Surfraz

      1月 9, 2019 1:51 pm

      I disagree that this post is not useful, its useful to anyone who uses unityscript currently. Just because you read the original post, does not mean everyone has or that everyone even knows its there.

      But I do agree that posts about unity staff members are not useful at all to anyone and while probably a nice motivational tool for the staff members, basically feels like a spam post whenever they are up. I come here to read interesting blog posts, not stuff that should really be internal. Knowing you have a new starter does not really help us in any way and feels like a wasted blog post honestly, when given all the other things you could write about (both technical and non technical)

    6. While I think that the Unity Blog is awesome, and the Unity Blog team does a great job, there are elements of your comment I agree with. I’d like the blog to kill more birds with a stone. Basically, focus on upcoming features that don’t have enough explanation or documentation yet, and create a resource for people who want to be the best and brightest at using Unity’s latest releases.

      The blogs’ wording could be referenced in the site’s actual documentation, cutting down on copy writing time, making sure you guys’ work gets utilized and appreciated in even more places, and even allow you to steal the documentation team from time to time and get even more blog posts out per week. I’d love to see a blog post a day!

      You guys are awesome, thanks for making this blog! It’s one of my favorite blogs on the internet.