So to program a game with Unity I need to learn C# and then also Unity features ? is that correct?
Where can I find good C# tutorials ? And what program do i need to apply C# on a Mac ?
You can also use Java in Unity (doesn't have to be C#) I don't know a good resource, becuase I learned C++ first and then just picked up C# by using the documentation for it (since they're quite similar in context) and playing around with it and troubleshooting. Oh, I do love Microsoft's official tutorials (the ones with Bob Tabor).
Here, I went and looked it up:
I have no idea how good it is, but I used his tutorials to get into Windows Phone development and they were great. He's easy to listen to and usually explains things in enough detail to take in without having to repeat the video or anything.
Codecademy.com is a great for complete beginners to coding. Use the Java course if you're wanting to get into C# right away, but honestly I'd just stick to Java since you can use that in Unity instead of C#, and C# is Microsoft-focused and meant to be used on Windows. It's not really appropriate for programming an iOS game anyway. Someone correct me if I am mistaken on this, though, because I don't touch Apple products.
However, I would strongly suggest just learning programming (in general) and game design and programming in quite a bit of detail before moving onto Unity. Make at least one graphical game without an engine, just using gaming libraries or something, before using an engine. I can't stress this enough! In the forums for popular engines like Unity and GMS, there are so many questions asked that show that people have no idea what the engine is even there for and how games work in general. So we pretty much have to explain a LOT more to them than really needed, and we're explaining concepts outside the scope of the engine. Which is fine, the forums are there for community help, but they will encounter more and more problems in the future until they understand these kinds of concepts. Things like object-oriented programming, game loops and updates, etc.
Plus, if you're wanting to develop for a platform like iOS, you need to learn how iOS programming works. Each platform has its own structure that you'll need to understand that is different than programming for your home computer (which is probably what you'll be learning with at first!)
Using a game engine like Unity is a lot like using professional music composition/notation software. You can learn how to use the software all you want, but if you don't know how to compose music, you won't get much out of it. Even if you learn how to notate music (which is kinda like simply learning basics of a programming language), actually making a musical composition will be difficult. You have to understand music theory and actual composition before you can use the software to help you actually compose a piece.
And depending on the type of game you want to make, you may consider other engines. Many engines are good for iOS games (as it's a very popular platform). Unity is great for physics-based action-focused games, and especially 3D games (though it now has 2D game structure built-in, too!). But other engines may be better for other things. I feel like turn-based/menu-based games or games that require no physics like SHMUPS are more easily constructed developed in something like GameMaker Studio (though it costs money, compared to Unity, which is free, and overall more fleshed-out), though GMS has a lot of other downsides. Of course, it's not impossible to make whatever you want in Unity, but it's not always the best engine for every project. Once you learn about coding and game programming, learn about many engines that are compatible with iOS and see which work best for whatever project you want to take on. Once you understand the basics, you'll be able to make a more educated decision on what engine you want to use. You may even decide you don't want to use an engine at all and can just use the toolkits provided by Apple to make your game in a more "from-scratch" format